#swagger #openapi
#swagger #openapi
Вопрос:
Я хочу, чтобы почти все мои пути имели следующие 3 общих ответа об ошибках. Как мне описать это в Swagger без копирования этих строк повсюду?
401:
description: The requester is unauthorized.
schema:
$ref: '#/definitions/Error'
500:
description: "Something went wrong. It's server's fault."
schema:
$ref: '#/definitions/Error'
503:
description: Server is unavailable. Maybe there is maintenance?
schema:
$ref: '#/definitions/Error'
Пример того, как я использую это в запросе:
paths:
/roles:
get:
summary: Roles
description: |
Returns all roles available for users.
responses:
200:
description: An array with all roles.
schema:
type: array
items:
$ref: '#/definitions/Role'
401:
description: The requester is unauthorized.
schema:
$ref: '#/definitions/Error'
500:
description: "Something went wrong. It's server's fault."
schema:
$ref: '#/definitions/Error'
503:
description: Server is unavailable. Maybe there is maintenance?
schema:
$ref: '#/definitions/Error'
Ответ №1:
Похоже, я могу добавить следующее определение глобального ответа:
# An object to hold responses that can be used across operations.
# This property does not define global responses for all operations.
responses:
NotAuthorized:
description: The requester is unauthorized.
schema:
$ref: '#/definitions/Error'
Однако мне все равно нужно будет ссылаться на него в таких путях:
401:
$ref: '#/responses/NotAuthorized'
То же самое в OpenAPI 3.0, за исключением того #/components/responses/...
, что вместо #/responses/...
:
openapi: 3.0.0
# An object to hold responses that can be used across operations.
# This property does not define global responses for all operations.
components:
responses:
NotAuthorized:
description: The requester is unauthorized.
schema:
$ref: '#/components/schemas/Error'
# Then, in operation responses, use:
...
401:
$ref: '#/components/responses/NotAuthorized'
В репозитории спецификаций OpenAPI также есть запрос open feature для добавления поддержки глобальных / стандартных ответов для операций.