【问题标题】:How to parameterize the API base path in OpenAPI (Swagger)?如何在 OpenAPI (Swagger) 中参数化 API 基本路径?
【发布时间】:2016-02-22 22:28:56
【问题描述】:

我有一个这样的网址:

/id/{idnumber}/status

在此 URL 中,/id/{idnumber} 是 API 基本路径,/status 是资源。


我知道 OpenAPI (Swagger) 允许在路径中使用参数,如下所示:

paths:
  /id/{number}/status:

但这不是我需要的,因为/id/{idnumber} 是基本路径,而不是资源路径的一部分。

有没有办法在基本路径中有参数?

host: my.api.com
basePath: /id/{idnumber}   # <---

paths:
  /status:

【问题讨论】:

    标签: swagger openapi


    【解决方案1】:

    OpenAPI 3.0 现在支持参数化的基本路径,使用服务器变量

    openapi: 3.0.0
    ...
    
    servers:
      - url: https://my.api.com/id/{number}
        variables:
          number:
            default: '-1'
    

    请注意,服务器变量必须具有 default 值 - 如果客户端未提供值,则将使用该值。

    详情见:

    【讨论】:

    • 你可以使用 /id/{number} 作为服务器 url(swagger 2.0 中的 basePath)吗?我们的 swagger 2.0 刚刚使用 /id/{number} 作为基本路径,因此任何像 dev/prod/qa 这样的环境都会设置基本 url - 现在是否必须在 openapi 3.0 中定义完整的限定域名 (FQDN)?
    • 邮递员不支持
    【解决方案2】:

    我认为basePath 不允许使用变量。

    对于您的情况,您不需要使用basePath。您可以简单地将 /id/{idnumber} 放在 URL 路径中。对于example

        "/pet/{petId}": {
    

    【讨论】:

    • 但是我的场景太明显了,我只能使用basepath变量。我想知道如何在Swagger中做到这一点。
    • 抱歉@Rad4,您不能在 basePath 中使用变量。您可能必须使用 /id 作为基本路径,然后将 {idnumber}/status 作为您的操作。
    猜你喜欢
    • 2017-03-22
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多