2017-02-20 50 views
4

我有所有这些的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: "/" 

然而,https://generator.swagger.io编码斜线的路径,所以这是行不通的。那么有没有办法在Swagger中描述我的API?

+0

我们有同样的问题 - 到目前为止没有运气!如果我们找到任何东西,我会在这里更新 –

+1

看起来像Swagger 2.0(甚至3.0!)不支持这个功能,这里有一个关于为什么在这里的大讨论:https://github.com/OAI/OpenAPI-Specification/issues/892#issuecomment-281170254 似乎愚蠢,因为这似乎很常见。 –

+0

我刚刚注意到你是打开我引用的问题的人!哈哈 –

回答

1

所以这不会很快得到支持(它甚至没有计划Swagger 3.0),我不得不求助于解决方法。

如果我有一个路径/tags{tag_path}和我进入这样的事情作为tag_path/foo/bar,那么实际的查询请求的网址为:/tags%2Ffoo%2Fbar。所以,我只是在后端添加了对它的支持:/tags* urldecode代码的路径(%2Ffoo%2Fbar),它又变成/foo/bar

是的,黑客,但它的工作原理,它总比没有好。就我而言,标签名称不能包含/字符,所以没有冲突。当然,你的里程可能会有所不同。