如何在 Swagger 2.0 中对多个参数进行分组?

How to group multiple parameters in Swagger 2.0?

是否可以将多个参数分组以在多个路由中引用它们?

例如,我有一个在每条路线中都需要的参数组合。它们被定义为全局参数。如何对它们进行分组?

我想到了这样的定义:

parameters:
  MetaDataParameters:
    # Meta Data Properties
    - name: id
      in: query
      description: Entry identification number
      required: false
      type: integer
    
    - name: time_start
      in: query
      description: Start time of flare
      required: false
      type: string
    
    - name: nar
      in: query
      description: Active region number
      required: false
      type: string

然后在我的路线中引用整个组:

/test/:
  get:
    tags:
      - TEST
    operationId: routes.test
    parameters:
      - $ref: "#/parameters/MetaDataParameters"
    responses:
        200:
          description: OK

这在 Swagger 2.0 中可行吗?

这对于 Swagger 2.0 或 OpenAPI 3.0 是不可能的。我已经为此打开了一个功能请求,并建议在未来的版本中使用它:

https://github.com/OAI/OpenAPI-Specification/issues/445

您可以将 $ref 指向中间 .yaml 文件,如下所示:

//middle.yaml  <-----

- $ref: 'Defaul.yaml#/components/parameters/meta_id'
- $ref: 'Defaul.yaml#/components/parameters/meta_time_start'
- $ref: 'Default.yaml#/components/parameters/meta_nar'

您的 Default.yaml 文件应该是这样的:

//Default.yaml  <-----

components:
  parameters:
    meta_id:
      name: id
      in: query
      description: Entry identification number
      schema:
        type: integer
        example: 1
    meta_time_start:
      name: time_start
      in: query
      schema:
        type: string

最后,您的主文件应该如下所示:

/test/:
  get:
    tags:
      - TEST
    operationId: routes.test
    parameters:
      $ref: "../parameters/middle.yaml"  <---- external yaml file
    responses:
        200:
          description: OK

注意:您的 $ref 应该没有 -。就像我的例子