提问者:小点点

如何在OpenAPI中扩展定义的响应?


我想使用模式或示例扩展“200成功默认”响应。

paths:
  /home:
      ...
      responses:
        200:
          $ref: '#/components/responses/200SuccessDefault'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PieChartElement'
              examples:
                PieChart:
                  $ref: '#/components/examples/PieChart_1'

这种方法会遇到错误,schema示例字段被忽略:

$refs旁边的同级值被忽略。要向$ref添加属性,请将$ref包装到allOf中,或将额外的属性移动到引用的定义中(如果适用)。

我尝试了allOf

paths:
  /home:
      responses:
        200:
          allOf:
            - $ref: '#/components/responses/200SuccessDefault'
            - content:
                application/json:
                  schema:
                    type: array
                    items:
                      $ref: '#/components/schemas/PieChartElement'
                  examples:
                    PieChart:
                      $ref: '#/components/examples/PieChart_1'

这种方法会遇到错误:

不应该有额外的属性addtionalProperty: allOf
应该有必需的属性“描述”缺失属性:描述


共1个答案

匿名用户

您不能扩展引用的响应对象。但是,您可以使用共享模式对象并利用模式中的allOf对其进行扩展。

里面allOf你可以把:

  • 你的$ref
  • 扩展默认响应的新类型

如果你想给出一个完整的扩展响应(JSON)的例子,只需将其放入“application/json”。

OpenAPI的一个示例是:

    "202":
      description: Extended response sample
      content:
        application/json:
          schema:
            allOf:
              - $ref: "#/components/schemas/application"
              - type: object
                properties:
                  anotherProperty:
                    type: string
                    maxLength: 200
                    example: "Property example"
          example: {id: 1234, anotherProperty: "Hello"}