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

时间:2015-08-19 09:21:11

标签: parameters swagger definition 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可以实现吗?

2 个答案:

答案 0 :(得分:10)

目前Swagger无法做到这一点(版本2.0)。我已经为此打开了一个功能请求,建议用于下一个版本:

https://github.com/swagger-api/swagger-spec/issues/445

答案 1 :(得分:0)

您可以将 $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 应该没有 -。就像我的例子