如何解决连接在另一个网址上提供 swagger ui
我们使用 connexion
来提供 swagger ui。我们正在使用 openapi 3.0.0 规范。这是我们 swagger.yml
的一小部分:
openapi: 3.0.0
servers:
- url: /
paths:
/resource:
...
/resource2:
...
在这种情况下,ui 在 /ui
处提供。然而,我们使用 Nginx 将所有请求重定向到 /resource
到这个容器中。我们希望 swagger-ui 在 /some-subdir/ui
而不是 /ui
提供服务,以便能够将请求重定向到正确的容器。
试用 1
openapi: 3.0.0
servers:
- url: /app
paths:
/resource:
...
/resource2:
...
这是可行的,除了资源现在在 /app/resource
等处提供,而同一资源将来可能由另一个应用提供,因此我们不希望应用名称出现在资源(虽然它可能仅适用于 swagger-ui)。
试用 2
我发现,在构建连接应用程序时,我可以指定 swagger_url
选项:
options = {
'swagger_url': '/app/ui'
}
connexion_app = connexion.App(__name__,specification_dir='./',options=options)
现在 swagger-ui 在 /app/ui
处提供,但 ui 正在尝试提供 /openapi.json
,由于不在 /app
(或任何其他子目录)下,因此无法访问。>
解决方法
差不多了,还有另一个(隐藏得很好)选项可以更改 openapi.json
的路径,与 swagger_url
的组合有效:
options = {
'swagger_url': '/app/ui','openapi_spec_path': '/app/openapi.json'
}
connexion_app = connexion.App(__name__,specification_dir='./',options=options)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。