如何不在几乎所有路径中复制粘贴 3 个一般错误响应?
How not to copy-paste 3 generic error responses in almost all paths?
我希望我的几乎所有路径都有以下 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'
看来我可以添加以下全局响应定义:
# 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 规范存储库中还有一个开放的 feature request 以添加对 global/default 操作响应的支持。
我希望我的几乎所有路径都有以下 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'
看来我可以添加以下全局响应定义:
# 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 规范存储库中还有一个开放的 feature request 以添加对 global/default 操作响应的支持。