Swagger: wildcard path parameters

I have an API which allows any arbitrary path to be passed in, for example all of these:

  • /api/tags
  • /api/tags/foo
  • /api/tags/foo/bar/baz
  • Are valid paths. I tried to describe it as follows:

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

    However, https://generator.swagger.io encodes slashes in the path, so it doesn't work. So is there a way to describe my API in Swagger?


    So this is not going to be supported soon (it's not even planned for Swagger 3.0), and I have to resort to a workaround.

    If I have a path /tags{tag_path} and I enter something like this as tag_path : /foo/bar , then the actual query request URL will be: /tags%2Ffoo%2Fbar . So, I just added support for that on my backend: the endpoint handler for /tags* urldecodes the path (which is %2Ffoo%2Fbar ), and it becomes /foo/bar again.

    Yes, a hack, but it works, and it's better than nothing. In my case, tag names can't contain the / character, so there's no conflict. Your mileage may vary, of course.

    链接地址: http://www.djcxy.com/p/95270.html

    上一篇: RXJS 5 .subscribe()不带参数

    下一篇: Swagger:通配符路径参数