根据OpenAPI 3(Swagger)规范,对于错误状态代码的多种媒体类型,响应状态代码有意义吗

根据OpenAPI 3(Swagger)规范,对于错误状态代码的多种媒体类型,响应状态代码有意义吗,swagger,openapi,swagger-editor,openapi-generator,swagger-3.0,Swagger,Openapi,Swagger Editor,Openapi Generator,Swagger 3.0,如果我们遵循OAS3规范进行响应,我们可以看到每个响应状态代码可以有多种媒体类型,而每个媒体类型又有一个特定于它的模式 用例:例如下面的oas3示例,我们可以看到200有一个二进制流响应,但400有3种媒体类型:application/json、application/xml、text/plain 因此,客户机需要使用下面提到的所有媒体类型请求accept type标头。我们如何为400响应代码指定特定的媒体类型,或者基本上如何在400错误请求和200返回二进制流时向REST服务传递媒体类型作为

如果我们遵循OAS3规范进行响应,我们可以看到每个响应状态代码可以有多种媒体类型,而每个媒体类型又有一个特定于它的模式

用例:例如下面的oas3示例,我们可以看到200有一个二进制流响应,但400有3种媒体类型:application/json、application/xml、text/plain

因此,客户机需要使用下面提到的所有媒体类型请求accept type标头。我们如何为400响应代码指定特定的媒体类型,或者基本上如何在400错误请求和200返回二进制流时向REST服务传递媒体类型作为application/xml进行响应

此OAS3响应多介质类型对于客户端/服务器错误是否有意义。如果是,那么预期的接受类型是什么,对于400个错误的请求说“application/xml”

请参考下面的招摇过市UI快照。在这里,我们还可以看到错误代码的媒体类型下拉列表。但是,当我们尝试执行rest操作时,只会根据200状态码的媒体类型填充accept头


编辑:修改了OAS3规范和大摇大摆的UI

只有当客户端发送包含服务可以提供的所有可能媒体类型的accept标头时,我才能看到突破。但在这种情况下,OAS3规范是否提供了一些方法,说明如果有多个介质类型涉及相同的状态代码,则服务可以优先于介质类型。对于ex优先级,可以类似于400_status_code==>json>xml>text
openapi: 3.0.0
info:
  version: "1.0"
  title: Resource
  description: Resource service
paths:
  /resource:
    get:
      summary: getResource
      description: getResource
      operationId: get-resource
      responses:
        "200":
          description: a binary document to be returned
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error400Element"
            application/xml:
              schema:
                $ref: "#/components/schemas/Error400Element"
            text/plain:
              schema:
                $ref: "#/components/schemas/Error400Element"
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error500Element"
            application/xml:
              schema:
                $ref: "#/components/schemas/Error500Element"
            text/plain:
              schema:
                $ref: "#/components/schemas/Error500Element"
servers:
  - url: http://localhost:8088/
components:
  schemas:
    Error400Element:
      type: object
      required:
        - name
      properties:
        name:
          type: string
        number:
          type: integer
    Error500Element:
      type: object
      properties:
        number:
          type: integer
        flag:
          type: boolean