微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

连接在另一个网址上提供 swagger ui

如何解决连接在另一个网址上提供 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?