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

Arc*_*dix 6 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": ...
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Ron*_*Ron 2

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

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

"paths": {
  "/stuff": {
    "get": {
      "description": "Gets stuff",
      "operationId": "getStuff",
      "parameters": [
        {
          "$ref": "#/parameters/a"
        },
        {
          "$ref": "#/parameters/b"
        }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 遗憾的是,这不受支持,因为我有不同的参数集,这些参数集取决于 HTTP 动词/方法以及共享这些方法的多个实体的路径。然而,我也尝试在示例中定义与“get”相同级别的“parameters”数组,它应该根据 Swagger 规范工作,但在 [swagger-ui](https://github.com /swagger-api/swagger-ui) 除非我在“get”下面定义参数,否则这些参数不会显示。知道为什么吗? (3认同)