是否可以定义参数集并引用它?

时间:2015-04-29 16:35:13

标签: reference swagger swagger-2.0

我想要引用多个参数,但我不想逐个指定它们。

此代码段不会显示参数:

{
    ...
    "paths": {
        "/stuff": {
            "get": {
                "description": "Gets stuff",
                "operationId": "getStuff",
                "parameters": {
                    "$ref": "#/definitions/set1"
                }
            }
        }
    },
    "parameters": {
        "a": {
            "name": "a",
            "in": "query",
            "description": "Param A",
            "required": false,
            "type": "string"
        },
        "b": {
            "name": "b",
            "in": "query",
            "description": "Param B",
            "required": false,
            "type": "string"
        }
    },
    "definitions": {
        "set1": [
            {
                "$ref": "#/parameters/a"
            },
            {
                "$ref": "#/parameters/b"
            }
       ],
       "set2": ...
    }
}

这是可能的,还是我必须为每个请求指定set1这样的每个参数?

1 个答案:

答案 0 :(得分:2)

实际上,这不是一个有效的定义,正如您所建议的那样,您必须通过引用全局参数来单独指定每个参数。如果为特定路径下的所有操作共享参数,则可以在路径级别定义这些参数,并将它们应用于所有操作。

对于单个操作,您将其定义为:

"paths": {
  "/stuff": {
    "get": {
      "description": "Gets stuff",
      "operationId": "getStuff",
      "parameters": [
        {
          "$ref": "#/parameters/a"
        },
        {
          "$ref": "#/parameters/b"
        }
      ]
    }
  }
}