如何在OpenAPI 3.0中定义标头参数?

时间:2018-05-01 13:08:38

标签: swagger openapi

在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中定义请求标头的正确方法是什么?

1 个答案:

答案 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: []
      ...