swagger Springdoc OpenAPI ui不荣誉“位置”中的上下文路径

ldioqlga  于 2022-11-06  发布在  Spring
关注(0)|答案(3)|浏览(154)

设置:

我在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,这是一个比我的更早的版本。

8iwquhpp

8iwquhpp1#

好的,问题是springdoc-openapi-ui不知道你的应用程序上下文路径,除非它是在spring Boot 中定义的,这可能不是每个人都能做到的。
希望它确实支持非标准报头X-Forwarded-Prefix,可以由您的网关发送。
在我的情况下(Kubernetes),只需添加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-forwarded-prefix-header
https://github.com/springdoc/springdoc-openapi/issues/607

ovfsdjhp

ovfsdjhp2#

没有关于上下文路径使用的已知问题。如您所知,#37已解决,并报告已确认!
只需确保您按照在标准的spring-boot应用程序上设置context-path的说明操作即可。
您可以在不同的演示示例中测试上下文路径的配置:

如果您有任何问题,可以通过提供最小/可重现的示例或使用重现问题的单元测试来记录问题。

g2ieeal7

g2ieeal73#

为了在配置外部context-path时正确配置swagger-ui,请使用以下配置。

springdoc.swagger-ui.config-url=/context-path/api-docs/swagger-config
springdoc.swagger-ui.url=/context-path/api-docs
springdoc.api-docs.path=/api-docs

相关问题