如何在OpenAPI(Swagger)中为同一路径定义不同的查询参数?

时间:2016-11-08 20:32:15

标签: swagger openapi

我正在使用Swagger Codegen启动REST服务。我需要对不同的参数有不同的响应。

示例:<baseURL>/path可以使用?filter1=?filter2=,这些参数应生成不同的响应消息。

我希望我的OpenAPI YAML文件分别记录这两个查询参数。这可能吗?

3 个答案:

答案 0 :(得分:3)

2.0规范不支持,也不支持3.0。

以下是OpenAPI规范存储库中的相应提议:
Accommodate legacy APIs by allowing query parameters in the path
Querystring in Path Specification

答案 1 :(得分:1)

如果您仍在寻找,我找到了解决此问题的方法。这有点hack,但是可以用。

基本上,通过在URL中添加斜杠(/),可以对同一路径具有两个定义。

这样,您可以使用<baseURL>/path参数为?filter1=设置响应,并使用<baseURL>//path参数为?filter2=设置另一个响应。为每个定义提供唯一的operationId也很重要。

paths:
   /path/you/want:
      get:
         summary: Test 
         operationId: get1
         parameters:
         - name: filter1
         type: string
         in: path
         required: true
      responses:
         200:
            description: Successful response
            schema:
              $ref: '#/definitions/SomeResponse'

   /path/you//want:
     get:
         summary: Another test
         operationId: get2
         parameters:
         - name: filter2
         type: string
         in: path
         required: true
     responses:
       200:
         description: Successful response
         schema:
           $ref: '#/definitions/SomeOtherResponse'

我用path参数尝试了一下,效果很好!

答案 2 :(得分:0)

这有效!!!只需在URL之间添加“ /”。 之前: 路径  / my / path

帖子:

之后: 路径  /我自己的路   帖子:

效果很好。