如何在 OpenAPI 3.0 中全局设置 Accept 标头?

Dan*_*rin 9 openapi swaggerhub

我通过 SwaggerHub 进行了新的 OpenAPI 设置。是否可以选择Accept全局强制某个标头?

我已经设置了Content-Type响应:

openapi: 3.0.0

paths:
  /test-path:
     get:
       responses:
         '200':
           description: OK
           content:
             application/vnd.company.v1.0.0+json:
Run Code Online (Sandbox Code Playgroud)

Accept通过 cURL 请求插入不同的标头时,会执行以下操作:

{"message":"Missing matching response for specified Accept header"}
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为我们没有为此提供任何回应。

Hel*_*len 7

与具有全局consumes和 的producesOpenAPI/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:
            ...
Run Code Online (Sandbox Code Playgroud)