【发布时间】:2021-02-11 08:26:35
【问题描述】:
我们正在使用connexion 来提供招摇的用户界面。我们使用的是 openapi 3.0.0 规范。这是我们swagger.yml的一小部分:
openapi: 3.0.0
servers:
- url: /
paths:
/resource:
...
/resource2:
...
在这种情况下,用户界面在/ui 提供。然而,我们正在使用 nginx 将所有到 /resource 的请求重定向到这个容器中。我们希望在 /some-subdir/ui 而不是 /ui 提供 swagger-ui,以便能够将请求重定向到正确的容器。
试用 1
openapi: 3.0.0
servers:
- url: /app
paths:
/resource:
...
/resource2:
...
这可行,除了资源现在在/app/resource 等处提供,而同一资源将来可能由另一个应用提供,所以我们不希望应用名称出现在资源的 URL 中(虽然对于 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(或任何其他子目录)下,所以无法访问。
【问题讨论】:
标签: swagger-ui openapi connexion