在 Swagger YAML 定义中,有没有办法避免 HTTP 方法之间的重复?

In a Swagger YAML definition, is there a way to avoid duplication among HTTP methods?

我正在编写 API 规范,我希望 PUT 和 PATCH 功能相同。 API 是否收到 PUT 或 PATCH 请求并不重要。它会做同样的事情。

是否有 shorthand/reference 语法阻止我将参数和响应等从我的 PUT 方法定义复制和粘贴到 PATCH 方法定义?

没有

尽管 OpenAPI (fka Swagger) 规范 2.0 在 API 定义的某些地方支持 $ref,但在操作级别上不受支持。所以你需要对 PUT 和 PATCH 有单独的定义。您可以通过 $ref 在每个操作中输入参数和响应来减少代码重复。

paths:
  /foo:
    # If ALL operations within a path have some common parameters,
    # define these params on the path level instead
    # parameters:
    #  - $ref: '#/parameters/baz'

    put:
      parameters:
        - $ref: '#/parameters/baz'
      responses:
        200:
          $ref: '#/responses/Success'
        default:
          $ref: '#/responses/Error'
    patch:
      parameters:
        - $ref: '#/parameters/baz'
      responses:
        200:
          $ref: '#/responses/Success'
        default:
          $ref: '#/responses/Error'

parameters:
  baz:
    in: query
    name: baz
    type: string

responses:
  Success:
    description: Operation completed successfully
    schema:
      type: object
      ...
  Error:
    description: Error response
    schema:
      type: object
      ...