如何在 OpenAPI 3.0 中全局设置 Accept header?
How to set the Accept header globally in OpenAPI 3.0?
我通过 SwaggerHub 进行了新的 OpenAPI 设置。是否可以选择在全局范围内强制执行某个 Accept
header?
我已经在响应中设置了 Content-Type
:
openapi: 3.0.0
paths:
/test-path:
get:
responses:
'200':
description: OK
content:
application/vnd.company.v1.0.0+json:
当通过 cURL 请求插入不同的 Accept
header 时,会生成以下内容:
{"message":"Missing matching response for specified Accept header"}
这是有道理的,因为我们没有对此提供任何回应。
与具有 的 OpenAPI/Swagger 2.0 不同,OpenAPI 3.0 要求在每个操作中分别定义请求和响应媒体类型。无法全局定义 Content-Type
或请求或响应。
但是,您可以$ref
通用响应定义(例如错误响应),这可以减少重复。
openapi: 3.0.2
...
paths:
/foo:
get:
responses:
'400':
$ref: '#/components/responses/ErrorResponse'
/bar:
get:
responses:
'400':
$ref: '#/components/responses/ErrorResponse'
components:
responses:
ErrorResponse:
description: An error occurred
content:
application/vnd.error+json:
schema:
...
我通过 SwaggerHub 进行了新的 OpenAPI 设置。是否可以选择在全局范围内强制执行某个 Accept
header?
我已经在响应中设置了 Content-Type
:
openapi: 3.0.0
paths:
/test-path:
get:
responses:
'200':
description: OK
content:
application/vnd.company.v1.0.0+json:
当通过 cURL 请求插入不同的 Accept
header 时,会生成以下内容:
{"message":"Missing matching response for specified Accept header"}
这是有道理的,因为我们没有对此提供任何回应。
与具有 Content-Type
或请求或响应。
但是,您可以$ref
通用响应定义(例如错误响应),这可以减少重复。
openapi: 3.0.2
...
paths:
/foo:
get:
responses:
'400':
$ref: '#/components/responses/ErrorResponse'
/bar:
get:
responses:
'400':
$ref: '#/components/responses/ErrorResponse'
components:
responses:
ErrorResponse:
description: An error occurred
content:
application/vnd.error+json:
schema:
...