设置:
我在1.4.0版本(通过Maven)中使用Java库springdoc-openapi-ui
,在一个简单的 Spring 启动项目中没有进行任何定制。
在https://my-url.com/my-context-path/swagger-ui/index.html下生成Swagger页面
以及https://my-url.com/my-context-path/v3/api-docs/下的api文档
这两个都能用,我能够到它们。到目前为止,一切顺利!
现在的问题是:
当简单地导航到https://my-url.com/my-context-path/swagger-ui.html时,我会得到一个HTTP状态302和一个location
属性集,该属性集位于响应标头中,应该会将我重定向到上面的swagger页面(我假设)。
但是,location
属性中的URL缺少上下文路径!它看起来像这样:https://my-url.com/swagger-ui/index.html?configUrl=/v3/api-docs/swagger-config
404错误提示-页面不存在页面不存在页面不存在页面不存在页面不存在...
你知道为什么会发生这种情况以及如何修复吗?
这个Github问题看起来是同一个问题,但最后它声明这个问题已经修复:https://github.com/springdoc/springdoc-openapi/issues/37,这是一个比我的更早的版本。
3条答案
按热度按时间8iwquhpp1#
好的,问题是
springdoc-openapi-ui
不知道你的应用程序上下文路径,除非它是在spring Boot 中定义的,这可能不是每个人都能做到的。希望它确实支持非标准报头
X-Forwarded-Prefix
,可以由您的网关发送。在我的情况下(Kubernetes),只需添加
nginx.ingress.kubernetes.io/x-forwarded-prefix: "true"
即可在图表中配置入口在应用程序配置中,还需要指定
以使用Spring的支持来处理转发的头。
资料来源:
https://github.com/kubernetes/ingress-nginx/issues/3670
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#x-forwarded-prefix-header
https://github.com/springdoc/springdoc-openapi/issues/607
ovfsdjhp2#
没有关于上下文路径使用的已知问题。如您所知,#37已解决,并报告已确认!
只需确保您按照在标准的spring-boot应用程序上设置context-path的说明操作即可。
您可以在不同的演示示例中测试上下文路径的配置:
如果您有任何问题,可以通过提供最小/可重现的示例或使用重现问题的单元测试来记录问题。
g2ieeal73#
为了在配置外部context-path时正确配置swagger-ui,请使用以下配置。