Как протестировать в postMan загрузку excel для opnApi 3.0

Рейтинг: 1Ответов: 1Опубликовано: 13.07.2023

использовал openApi 3.0 для описания метода загрузки excel файла на сервер

/rest/v1/manual/upload:
    put:
      tags:
        - Manual
      operationId: uploadManual
      requestBody:
        content:
          application/vnd.ms-excel:
            schema:
              type: string
              format: binary
      responses:
        200:
          description: Успешно
        400:
          description: Неверный формат запроса
          content: { }

был сгенерирован такой код

@RequestMapping(
        method = {RequestMethod.PUT},
        value = {"/rest/v1/manual/upload"},
        consumes = {"application/vnd.ms-excel"}
    )
    ResponseEntity<Void> uploadManual(@Parameter(name = "UploadManualRequestDto",description = "") @Valid @RequestBody(required = false) UploadManualRequestDto var1);
}

класс UploadManualRequestDto

@JsonTypeName("uploadManual_request")
public class UploadManualRequestDto implements Serializable {
    private static final long serialVersionUID = 1L;
    @JsonProperty("fileName")
    private Resource fileName;

    public UploadManualRequestDto() {
    }

    public UploadManualRequestDto fileName(Resource fileName) {
        this.fileName = fileName;
        return this;
    }

при тестировании в postMan загружаю Эксель и получаю в ответ

{
    "timestamp": "2023-07-13T10:16:45.392+00:00",
    "status": 415,
    "error": "Unsupported Media Type",
    "message": "Content type 'multipart/form-data;boundary=--------------------------774338803164362961412768' not supported",
    "path": "/rest/v1/manual/upload"
}

введите сюда описание изображения

введите сюда описание изображения

Ответы

▲ 0Принят

Мне кажется, ошибка в типе содержимого. У вас указан application/vnd.ms-excel

/rest/v1/manual/upload:
    put:
      tags:
        - Manual
      operationId: uploadManual
      requestBody:
        content:
          application/vnd.ms-excel:
            schema:
              type: string
              format: binary

Но ответ обрабатывается как содержащий multipart/form-data:

{
    "timestamp": "2023-07-13T10:16:45.392+00:00",
    "status": 415,
    "error": "Unsupported Media Type",
    "message": "Content type 'multipart/form-data;boundary=--------------------------774338803164362961412768' not supported",
    "path": "/rest/v1/manual/upload"
}

Попробуйте переписать спеку с использованием multipart/form-data:

/rest/v1/manual/upload:
    put:
      tags:
        - Manual
      operationId: uploadManual
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: string
              format: binary

P.S. Если схема правильная, а вопрос в Постмане, то в разделе "Тело" измените способ передачи файла. Судя по скрину вы передаёте его в виде form-data, хотя в схеме указан binary.