在 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
...
我正在编写 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
...