Как я могу настроить маршрут моего узла swagger для приема любого типа контента?

В настоящее время мой Swagger YAML настроен для принятия application/json по умолчанию для каждого маршрута со следующим в определении Swagger верхнего уровня:

swagger: "2.0"
info:
  version: "0.0.1"
  title: my App
# during dev, should point to your local machine
host: localhost:5054
# basePath prefixes all resource paths
basePath: /
schemes:
# tip: remove http to make production-grade
  - http
  - https
# format of bodies a client can send (Content-Type)
consumes:
  - application/json
produces:
  - application/json

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

get:
   description: Download a single document
   operationId: getDocument
   produces: []

но Swagger UI не позволит мне отправить запрос в UI, так как считает, что Accept поле заселено.

Затем:

get:
   description: Download a single document
   operationId: getDocument
   produces: */*

Но Swagger UI выдает ошибку, заявляющую unidentified alias "/*", Я тоже пробовал \*/* на всякий случай, это было связано с необходимостью сбежать, но это не сработало.

В заключение:

get:
   description: Download a single document
   operationId: getDocument
   produces: "*/*"

Это позволило мне протестировать маршрут в Swagger UI, но ответ по-прежнему не прошел проверку и утверждал, что ожидаемый тип контента все еще должен быть application/json,

Есть ли подстановочный знак, который работает, или я пытаюсь сделать что-то, для чего Swagger не настроен?

1 ответ

*/* соответствует всем типам медиа и эквивалентно application/octet-stream,

produces это массив, поэтому вам нужно использовать синтаксис массива. Кроме того, так как это YAML, '*/*' должен быть заключен в кавычки, потому что * это специальный символ, используемый для обозначения псевдонимов узлов.

produces:
  - '*/*'
  # or
  - application/octet-stream
Другие вопросы по тегам