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

问题描述 投票:2回答:3

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

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

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

swagger openapi
3个回答
3
投票

它在2.0规范中不受支持,也不在3.0中。

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


1
投票

如果你还在寻找,我找到了解决这个问题的方法。这有点像黑客,但它确实有效。

基本上,通过在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'

我尝试使用路径参数,它工作得很好!


0
投票

这工作!!!只需在URL之间添加“/”即可。之前:path / my / path

职位:

after:path / my // path post:

这非常有效。

© www.soinside.com 2019 - 2024. All rights reserved.