java - Openapi generator angular genererer ikke multipart formdata-endepunktet riktig. (useForm er false som standard)


Dette er endepunktet jeg har:

@PostMapping(value = "/file-upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public List<FileReference> handleFileUpload(
        @RequestPart(value = "file", name = "file") MultipartFile[] file, @ApiIgnore HttpSession session) {
    return service.handleFileUpload(
            Arrays.stream(file).map(MultipartFileWithUUID::new).collect(Collectors.toList()),
            session);
}

Dette er den genererte endepunken i swagger.json (swagger 2.0):

...
  "post": {
        "tags": [
          "damage-report-controller"
        ],
        "summary": "handleFileUpload",
        "operationId": "handleFileUploadUsingPOST",
        "consumes": [
          "multipart/form-data"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "file",
            "in": "formData",
            "required": false,
            "type": "array",
            "items": {
              "type": "file"
            },
            "collectionFormat": "multi"
          }
        ],
...

Og her er den genererte funksjonen:

 public handleFileUploadUsingPOST(file?: Array<Blob> ...) {

let headers = this.defaultHeaders;

header settings etc...

        // to determine the Content-Type header
        const consumes: string[] = [
            'multipart/form-data'
        ];


        const canConsumeForm = this.canConsumeForm(consumes);

        let formParams: { append(param: string, value: any): any; };
        let useForm = false;

...
        if (useForm) {
            formParams = new FormData();
        } else {
            formParams = new HttpParams({encoder: this.encoder});
        }
...
}

Feilen jeg har er 415: Ustøttet mediatype.

Jeg vet ikke hvordan det skal genereres riktig, men jeg endret let useForm; til true og det fungerer, så min gjetning er at let useForm=canConsumeForm(consumes) fordi canConsumeForm returnerer en boolean.

Hva bør jeg endre slik at det blir generert riktig?

Svar #1

I tilfelle noen leser dette, har jeg ikke funnet den riktige løsningen med Swagger 2.0, så jeg oppdaterte til OpenAPI 3.0, og det løste problemet.

Tilsynelatende støtter ikke Swagger 2.0 opplasting av et array med filer, selv om det eneste problemet var at den genererte tjenesten ikke brukte eksisterende funksjoner riktig.