swagger - 如何在 OpenAPI 中定义全局参数?

标签 swagger openapi

我正在通过手工而不是自动生成来准备我的 API 文档。我有应该发送到所有 API 的 header ,但不知道是否可以为整个 API 全局定义参数?
其中一些 header 是静态的,一些必须在调用 API 时设置,但它们在所有 API 中都是相同的,我不想为每个 API 和每个方法复制和粘贴参数,因为这不会将来可维护。
我通过 API 定义看到了静态 header ,但没有关于人们如何设置或使用它们的单一文档。
这可能吗?

最佳答案

如果您在谈论消费者在调用 API 时发送的 header 参数...
您至少可以在参数部分中一劳永逸地定义它们,然后仅在需要时才引用它们。
在下面的例子中:

  • CommonPathParameterHeader , ReusableParameterHeaderAnotherReusableParameterHeaderparameters 中一劳永逸地定义位于文档根目录,可用于任何参数列表
  • CommonPathParameterHeaderparameters 中引用/resources的部分和 /other-resources路径,这意味着这些路径的所有操作都需要这个头
  • ReusableParameterHeaderget /resources 中引用意味着此操作需要它
  • AnotherReusableParameterHeader 也一样在 get /other-resources

  • 例子:
    swagger: '2.0'
    info:
      version: 1.0.0
      title: Header API
      description: A simple API to learn how you can define headers
    
    parameters:
      CommonPathParameterHeader:
        name: COMMON-PARAMETER-HEADER
        type: string
        in: header
        required: true
      ReusableParameterHeader:
        name: REUSABLE-PARAMETER-HEADER
        type: string
        in: header
        required: true
      AnotherReusableParameterHeader:
        name: ANOTHER-REUSABLE-PARAMETER-HEADER
        type: string
        in: header
        required: true
    
    paths:
      /resources:
        parameters:
          - $ref: '#/parameters/CommonPathParameterHeader'
        get:
          parameters:
            - $ref: '#/parameters/ReusableParameterHeader'
          responses:
            '200':
              description: gets some resources
      /other-resources:
        parameters:
          - $ref: '#/parameters/CommonPathParameterHeader'
        get:
          parameters:
            - $ref: '#/parameters/AnotherReusableParameterHeader'
          responses:
            '200':
              description: gets some other resources
        post:
          responses:
            '204':
              description: Succesfully created.
    
    如果您正在谈论随每个 API 响应发送的 header ...
    不幸的是,您无法定义可重用的响应 header 。
    但至少您可以为常见的 HTTP 响应(例如 500 错误)定义包含这些 header 的可重用响应。
    例子:
    swagger: '2.0'
    info:
      version: 1.0.0
      title: Header API
      description: A simple API to learn how you can define headers
    
    parameters:
      CommonPathParameterHeader:
        name: COMMON-PARAMETER-HEADER
        type: string
        in: header
        required: true
      ReusableParameterHeader:
        name: REUSABLE-PARAMETER-HEADER
        type: string
        in: header
        required: true
      AnotherReusableParameterHeader:
        name: ANOTHER-REUSABLE-PARAMETER-HEADER
        type: string
        in: header
        required: true
    
    paths:
      /resources:
        parameters:
          - $ref: '#/parameters/CommonPathParameterHeader'
        get:
          parameters:
            - $ref: '#/parameters/ReusableParameterHeader'
          responses:
            '200':
              description: gets some resources
              headers:
                X-Rate-Limit-Remaining:
                  type: integer
                X-Rate-Limit-Reset:
                  type: string
                  format: date-time
      /other-resources:
        parameters:
          - $ref: '#/parameters/CommonPathParameterHeader'
        get:
          parameters:
            - $ref: '#/parameters/AnotherReusableParameterHeader'
          responses:
            '200':
              description: gets some other resources
              headers:
                X-Rate-Limit-Remaining:
                  type: integer
                X-Rate-Limit-Reset:
                  type: string
                  format: date-time
        post:
          responses:
            '204':
              description: Succesfully created.
              headers:
                X-Rate-Limit-Remaining:
                  type: integer
                X-Rate-Limit-Reset:
                  type: string
                  format: date-time
            '500':
              $ref: '#/responses/Standard500ErrorResponse'
    
    responses:
      Standard500ErrorResponse:
        description: An unexpected error occured.
        headers:
          X-Rate-Limit-Remaining:
            type: integer
          X-Rate-Limit-Reset:
            type: string
            format: date-time
    
    关于 OpenAPI (fka. Swagger) 下一个版本
    OpenAPI 规范(fka. Swagger)将发展并包括可重用响应 header 的定义等(参见 https://github.com/OAI/OpenAPI-Specification/issues/563)。

    关于swagger - 如何在 OpenAPI 中定义全局参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39791491/

    相关文章:

    c# - openapi-generator 如何在我的解决方案的 MS 测试项目中生成 c-sharp .NET core 3.1 兼容测试?

    swagger - openapi3/swagger 描述文本中的内嵌图像

    swagger - OpenAPI:必填字段、可选字段和未指定字段的混合

    java - 如何在undertow java中将OAuth2配置添加到swagger

    java - swagger oauth 明白了,那么现在怎么办?

    node.js - TSOA Express App 返回无法获取端点

    c# - 使用 Swagger 的 Web API

    c# - 将 C# 对象转换为 IOpenApiAny

    typescript - 从 typescript 接口(interface)生成 swagger 文档

    swagger - 如何在 Swagger open api 3.0 中定义常量字符串