当前位置: 首页 > 知识库问答 >
问题:

Springdoc OpenAPI ui不支持“位置”中的上下文路径

杨君之
2023-03-14

我使用的Java库springdoc-openapi-ui在版本1.4.0(通过Maven)没有任何定制在一个简单的Spring启动项目。

招摇过市页面是在下面生成的https://my-url.com/my-context-path/swagger-ui/index.html

以及api文档https://my-url.com/my-context-path/v3/api-docs/

这两种方法都有效,我可以找到它们。到现在为止,一直都还不错!

当简单地导航到https://my-url.com/my-context-path/swagger-ui.html我在响应头中得到一个HTTP状态302和一个location属性集,该属性应该将我从上面重定向到招摇过市页面(我假设)。

但是,位置属性中的URL错过了上下文路径!看起来像这样:https://my-url.com/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config

它重定向到一个不存在的页面,我得到一个404错误代码。请注意,configUrl似乎也缺少上下文路径。

你知道为什么会发生这种情况以及如何解决吗?

Github的这个问题似乎是同一个问题,但最后指出问题已经解决:https://github.com/springdoc/springdoc-openapi/issues/37这是我之前的版本。

共有2个答案

简培
2023-03-14

没有关于上下文路径使用的已知问题。如你所能#37已经解决,报告已经证实了这一点!

只需确保遵循在标准Spring Boot应用程序上设置上下文路径的说明即可。

您可以在不同的演示示例中测试上下文路径的配置:

  • https://github.com/springdoc/springdoc-openapi-demos

如果您有任何问题,可以通过提供最小/可复制的样本或通过再现问题的单元测试来记录问题。

于鸿博
2023-03-14

好吧,问题是springdoc openapi ui不知道你的应用程序上下文路径,除非它是在springboot中定义的,这可能不是每个人都能做到的。

希望它确实支持非标准头X-Forwarded-Prefix,可由网关发送。

在我的情况下(库伯内特斯),入口可以通过简单地添加nginx.ingress.kubernetes.io/x-forwarded-prefix配置:"true"

在您的应用程序配置中,您还需要指定

server:
  forward-headers-strategy: framework

使用Spring的支持来处理转发的头。

资料来源:

https://github.com/kubernetes/ingress-nginx/issues/3670

https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#x-转发前缀头

https://github.com/springdoc/springdoc-openapi/issues/607

 类似资料:
  • com.ibm.DB2.jcc.am.sqlsyntaxerroreXception:DB2 SQL错误:sqlcode=-199,sqlstate=42601,sqlerrmc=with;具有WHERE组顺序相交减除UNION),FETCH,driver=4.19.26 但是,如果我直接在大型机控制台中运行相同的查询,它工作得很好。 如何在Spark的sql上下文中使用WITH子句? filt_

  • 我们正在将spring boot应用程序从2.2.4迁移到2.4.3 该应用程序可以使用内置的tomcat/tomcat war部署运行 环境:Windows Azul Java 11(Zulu 11)和Tomcat 9.0.33 如果我用Netbeans链接的tomcat运行代码,它就可以正常工作 如果我在同一个独立的tomcat中直接部署生成的war,它会抛出以下错误。 在阅读Spring文档

  • 本文向大家介绍Ubuntu15下mysql5.6.25不支持中文的解决办法,包括了Ubuntu15下mysql5.6.25不支持中文的解决办法的使用技巧和注意事项,需要的朋友参考一下 apt-get install 安装的,不是源码包安装的mysql 1 修改mysql的配置文件 /etc/mysql/conf.d/mysql.cnf 在[mysql]的下方加入如下语句:(注:这个文件下没有配置,

  • 我有以下项目结构: src/main/resources/meta-inf/applicationcontext.xml src/webapp/web.xml .另外,在构建部分的pom.xml中,我将最终名称设置为“bet-manager-api”。我做错了什么?为什么没有伐木?我检查了tomcat/logs/中的所有日志,但没有找到任何重要的日志。谢谢

  • 我使用SpringBoot2.2.0.m2/Flyway5.2.4/Java8创建了一个新项目。在尝试开始我的项目后,我得到了: 我在db/migration下有一个init sql,名称为:(其中只有一行:) yml中的flyway配置(忽略其他数据源): 我试着调试它,发现总是返回false,这意味着没有找到位置(但在调试器中看起来是正确的),见下面的截图: 感谢任何善意的帮助:)

  • 我必须在tomcat 7中部署我的app.war文件。的。war文件名后面是它的版本号。这里我需要设置一个上下文路径,这样实际的url将只包含应用程序名(没有版本号)。 我的要求是,服务器中不应该有编辑.xml。 这是我的背景。xml如下所示。 context.xml放在war at /META-INF文件夹中。谁能告诉我我错在哪里?