Swagger 招摇过市:通配符路径参数

Swagger 招摇过市:通配符路径参数,swagger,swagger-ui,swagger-2.0,Swagger,Swagger Ui,Swagger 2.0,我有一个API,允许传入任意路径,例如所有这些路径: /api/tags /api/tags/foo /api/tags/foo/bar/baz 是有效的路径。我试着描述如下: /tags{tag_path}: get: parameters: - name: tag_path in: path required: true type: string default: "/"

我有一个API,允许传入任意路径,例如所有这些路径:

  • /api/tags
  • /api/tags/foo
  • /api/tags/foo/bar/baz
是有效的路径。我试着描述如下:

 /tags{tag_path}:
    get:
      parameters:
        - name: tag_path
          in: path
          required: true
          type: string
          default: "/"

但是,对路径中的斜杠进行编码,因此它不起作用。那么,有没有办法用Swagger来描述我的API呢?

所以这不会很快得到支持(Swagger 3.0甚至没有计划这样做),我不得不求助于一种变通方法

如果我有一个路径
/tags{tag_path}
,并且我输入类似这样的内容作为
tag_path
/foo/bar
,那么实际的查询请求URL将是:
/tags%2Ffoo%2Fbar
。因此,我刚刚在我的后端添加了对它的支持:
/tags*
url的端点处理程序解码路径(即
%2Ffoo%2Fbar
),它再次变成
/foo/bar


是的,一个黑客,但它是有效的,总比没有强。在我的例子中,标记名不能包含
/
字符,因此没有冲突。当然,您的里程数可能会有所不同。

我们也有同样的问题-到目前为止运气不好!如果我们发现了什么,我会在这里更新。看起来这在Swagger 2.0(甚至3.0!)中不受支持,并且有一个关于为什么在这里的大讨论:这样做似乎很愚蠢,因为这样做似乎很常见。我刚刚注意到你是我提到的问题的开篇者!哈哈,很好:)谢谢你和我在同一条船上,嗯。同样的问题。正因为如此,他才大摇大摆地放弃了