如何表示无关的 Swagger 参数
How to represent extraneous Swagger parameters
我们的业务正在寻求创建一个 Swagger 文档来表示内部服务器。
由于各种原因,每个请求都需要包含一系列无关的 header 参数:
parameters:
- name: device_id
in: header
required: false
type: string
- name: ip_address
in: header
required: true
type: string
- name: client_id
in: header
required: true
type: string
- name: request_id
in: header
required: true
type: string
如果不包含参数但参数本身与发出的请求无关,服务器将拒绝请求。
Swagger 文档的主要目的是生成少量客户端应用程序(我们控制所有这些应用程序)以与服务器进行交互。
我们可以在每个请求中显式添加每个参数,但这会导致文档中的重复以及客户端中的额外处理。或者,我们可以将这些参数视为元数据并将它们从文档中排除,依赖于客户端将它们适当地添加到每个请求中。
是否有针对此类参数的推荐方法?
OpenAPI 定义充当 API 提供商与客户之间的合同。除其他外,它还可以用于 generate client SDKs。所以希望 OpenAPI 定义能够准确描述你的 API,包括请求体格式、所需参数、身份验证等
应明确定义所有必需的参数。
为了减少代码重复,您可以在全局 parameters
部分(对于 OpenAPI 2.0)或 components/parameters
部分(对于 OpenAPI 3.0),然后 $ref
来自各个路径或操作的它们,如下所示:
Swagger/OpenAPI - use $ref to pass a reusable defined parameter
请注意,目前无法 $ref
一组参数。此处跟踪相应的功能请求:
Group multiple parameter definitions for better maintainability
Global/common parameters(由于某种原因这个已经关闭了,尽管它没有实现)
我们的业务正在寻求创建一个 Swagger 文档来表示内部服务器。
由于各种原因,每个请求都需要包含一系列无关的 header 参数:
parameters:
- name: device_id
in: header
required: false
type: string
- name: ip_address
in: header
required: true
type: string
- name: client_id
in: header
required: true
type: string
- name: request_id
in: header
required: true
type: string
如果不包含参数但参数本身与发出的请求无关,服务器将拒绝请求。
Swagger 文档的主要目的是生成少量客户端应用程序(我们控制所有这些应用程序)以与服务器进行交互。
我们可以在每个请求中显式添加每个参数,但这会导致文档中的重复以及客户端中的额外处理。或者,我们可以将这些参数视为元数据并将它们从文档中排除,依赖于客户端将它们适当地添加到每个请求中。
是否有针对此类参数的推荐方法?
OpenAPI 定义充当 API 提供商与客户之间的合同。除其他外,它还可以用于 generate client SDKs。所以希望 OpenAPI 定义能够准确描述你的 API,包括请求体格式、所需参数、身份验证等
应明确定义所有必需的参数。
为了减少代码重复,您可以在全局 parameters
部分(对于 OpenAPI 2.0)或 components/parameters
部分(对于 OpenAPI 3.0),然后 $ref
来自各个路径或操作的它们,如下所示:
Swagger/OpenAPI - use $ref to pass a reusable defined parameter
请注意,目前无法 $ref
一组参数。此处跟踪相应的功能请求:
Group multiple parameter definitions for better maintainability
Global/common parameters(由于某种原因这个已经关闭了,尽管它没有实现)