在OpenAPI(Swagger)2.0中,我们可以像这样定义标题参数:
import UIKit
class PartialTransparentView: UIView {
var rectsArray: [CGRect]?
convenience init(rectsArray: [CGRect]) {
self.init()
self.rectsArray = rectsArray
backgroundColor = UIColor.black.withAlphaComponent(0.6)
isOpaque = false
}
override func draw(_ rect: CGRect) {
backgroundColor?.setFill()
UIRectFill(rect)
guard let rectsArray = rectsArray else {
return
}
for holeRect in rectsArray {
let holeRectIntersection = rect.intersection(holeRect)
UIColor.clear.setFill()
UIRectFill(holeRectIntersection)
}
}
}
但是在OpenAPI 3.0.0中,参数被请求体替换,我找不到定义头参数的方法,这将进一步用于身份验证。
在OpenAPI 3.0.0中定义请求标头的正确方法是什么?
答案 0 :(得分:10)
在OpenAPI 3.0中,标题参数的定义方式与OpenAPI 2.0相同,只是type
已替换为schema
:
paths:
/post:
post:
parameters:
- in: header
name: X-username
schema:
type: string
如有疑问,请查看Describing Parameters指南。
但是在Swagger 3.0.0中,参数被请求体替换。
仅适用于表单和正文参数。其他参数类型(路径,查询,标题)仍定义为parameters
。
定义标头参数,这些参数将进一步用于身份验证。
定义与身份验证相关的参数的更好方法是使用securitySchemes
,而不是在parameters
中明确定义这些参数。安全方案用于参数,如API密钥,应用程序ID /密码等。在您的情况下:
components:
securitySchemes:
usernameHeader:
type: apiKey
in: header
name: X-Username
paths:
/post:
post:
security:
- usernameHeader: []
...