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

Swagger 在一个夸张的YAML定义中,有没有办法避免HTTP方法之间的重复?,swagger,swagger-2.0,Swagger,Swagger 2.0,我正在编写一个API规范,我希望它的PUT和PATCH功能是相同的。API是否收到PUT或补丁请求并不重要。它也会做同样的事情 是否有一种简写/引用语法可以防止我将参数和响应等从PUT方法定义复制和粘贴到修补程序方法定义?否 尽管OpenAPI(fka Swagger)规范2.0在API定义的某些地方支持$ref,但在操作级别上不支持它。所以您需要对PUT和PATCH有单独的定义。通过$ref在每个操作中调用参数和响应,可以在一定程度上减少代码重复 paths: /foo: # If

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

是否有一种简写/引用语法可以防止我将参数和响应等从PUT方法定义复制和粘贴到修补程序方法定义?

尽管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
      ...

简单回答,不可以。不能用两种方法进行操作。从技术上讲,你可以,但是你不能从ui执行它们,所以你必须修改swagger ui,这是不可取的。好吧,我就是这么想的。总比没有强!