Swagger:通配符路径参数

Dmi*_*ank 12 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: "/"
Run Code Online (Sandbox Code Playgroud)

但是,https: //generator.swagger.io会在路径中对斜杠进行编码,因此它不起作用.那么有没有办法在Swagger中描述我的API?

Dmi*_*ank 6

因此,将不会很快支持此功能(甚至没有针对Swagger 3.0计划),因此我不得不求助于解决方法。

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

是的,可以破解,但是可以,而且总比没有好。就我而言,标签名称不能包含/字符,因此没有冲突。当然,您的里程可能会有所不同。