Подтвердить что ты не робот

Как разместить файлы в Swagger (OpenAPI)?

Я использую Swagger для документирования моих услуг REST. Один из моих сервисов требует загрузки CSV файла. Я добавил следующее в раздел parameters в своем определении JSON API:

{
       "name": "File",
       "description": "The file in zip format.",
       "paramType": "body",
       "required": true,
       "allowMultiple": false,
       "dataType": "file"
}

и теперь я вижу опцию загрузки файла на моей странице пользовательского интерфейса Swagger. Но когда я выбираю файл и нажимаю "попробовать", я получаю следующую ошибку:

NS_ERROR_XPC_BAD_OP_ON_WN_PROTO: недопустимая операция над объектом-прототипом WrappedNative в jquery-1.8.0.min.js (строка 2)

Страница постоянно обрабатывается, и я не получаю никакого ответа.

Есть идеи, что может быть не так?

4b9b3361

Ответ 1

Наконец, я нашел ответ для этого, фактически ранее не было поддержки загрузки файла, теперь они обновлены swagger-ui.js. Вам нужно заменить свой старый на новый, а также вы должны определить эти свойства в параметрах для определенного параметра:

 "paramType": "body",
 "dataType": "file",

Ответ 2

Спецификация OpenAPI 2.0

В Swagger 2.0 (спецификация OpenAPI 2.0) используйте параметр формы (in: formData) с type установленным в file. Кроме того, операция consumes должна быть либо multipart/form-data, application/x-www-form-urlencoded или обоих.

  consumes:
    - multipart/form-data  # and/or application/x-www-form-urlencoded
  parameters:
    - name: file
      in: formData   # <-----
      description: The uploaded file data
      required: true
      type: file     # <-----

Спецификация OpenAPI 3.0

В спецификации OpenAPI 3.0 файлы определяются как двоичные строки, то есть type: string + format: binary (или format: byte, в зависимости от варианта использования). Содержимое файла ввода/вывода описывается в той же семантике, что и любой другой тип схемы (в отличие от OpenAPI 2.0):

Многокомпонентный запрос, один файл:

requestBody:
  content:
    multipart/form-data:
      schema:
        type: object
        properties:
          # 'file' will be the field name in this multipart request
          file:
            type: string
            format: binary

Многокомпонентный запрос, массив файлов:

requestBody:
  content:
    multipart/form-data:
      schema:
        type: object
        properties:
          # The property name 'file' will be used for all files.
          file:
            type: array
            items:
              type: string
              format: binary

Файл POST/PUT напрямую (тело запроса - это содержимое файла):

requestBody:
  content:
    application/octet-stream:
      # any media type is accepted, functionally equivalent to '*/*'
      schema:
        # a binary file of any type
        type: string
        format: binary

Примечание: семантика такая же, как и у других типов схем OpenAPI 3.0:

# content transferred in binary (octet-stream):
schema:
  type: string
  format: binary

Дальнейшая информация:

Ответ 3

Моя работа с

 "paramType": "formData",
 "dataType": "file",