如何在 OpenAPI 3.0 中定义 header 参数?
How to define header parameters in OpenAPI 3.0?
在 OpenAPI (Swagger) 2.0 中,我们可以这样定义 header 参数:
paths:
/post:
post:
parameters:
- in: header
name: X-username
但是在 OpenAPI 3.0.0 中,参数被请求主体取代,我找不到定义 header 参数的方法,这些参数将进一步用于身份验证。
在 OpenAPI 3.0.0 中定义请求 header 的正确方法是什么?
在 OpenAPI 3.0 中,header 参数的定义方式与 OpenAPI 2.0 中的相同,只是 type
已替换为 schema
:
paths:
/post:
post:
parameters:
- in: header
name: X-username
schema:
type: string
如有疑问,请查看 Describing Parameters 指南。
But in Swagger 3.0.0 parameters are replaced by request bodies.
这仅适用于表单和 body 参数。其他参数类型(路径、查询、header)仍然定义为parameters
.
define header parameters, which would further be used for authentication.
定义 authentication-related 参数的更好方法是使用 securitySchemes
而不是在 parameters
中显式定义这些参数。安全方案用于 API 密钥、应用程序 ID/secret 等参数。在您的情况下:
components:
securitySchemes:
usernameHeader:
type: apiKey
in: header
name: X-Username
paths:
/post:
post:
security:
- usernameHeader: []
...
在 OpenAPI (Swagger) 2.0 中,我们可以这样定义 header 参数:
paths:
/post:
post:
parameters:
- in: header
name: X-username
但是在 OpenAPI 3.0.0 中,参数被请求主体取代,我找不到定义 header 参数的方法,这些参数将进一步用于身份验证。
在 OpenAPI 3.0.0 中定义请求 header 的正确方法是什么?
在 OpenAPI 3.0 中,header 参数的定义方式与 OpenAPI 2.0 中的相同,只是 type
已替换为 schema
:
paths:
/post:
post:
parameters:
- in: header
name: X-username
schema:
type: string
如有疑问,请查看 Describing Parameters 指南。
But in Swagger 3.0.0 parameters are replaced by request bodies.
这仅适用于表单和 body 参数。其他参数类型(路径、查询、header)仍然定义为parameters
.
define header parameters, which would further be used for authentication.
定义 authentication-related 参数的更好方法是使用 securitySchemes
而不是在 parameters
中显式定义这些参数。安全方案用于 API 密钥、应用程序 ID/secret 等参数。在您的情况下:
components:
securitySchemes:
usernameHeader:
type: apiKey
in: header
name: X-Username
paths:
/post:
post:
security:
- usernameHeader: []
...