Swagger 在一个夸张的YAML定义中,有没有办法避免HTTP方法之间的重复?
我正在编写一个API规范,我希望它的PUT和PATCH功能是相同的。API是否收到PUT或补丁请求并不重要。它也会做同样的事情 是否有一种简写/引用语法可以防止我将参数和响应等从PUT方法定义复制和粘贴到修补程序方法定义?否 尽管OpenAPI(fka Swagger)规范2.0在API定义的某些地方支持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
$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,这是不可取的。好吧,我就是这么想的。总比没有强!