sch*_*obe 5 swagger swagger-ui springdoc springdoc-ui springdoc-openapi-ui
我springdoc-openapi-ui在一个简单的 spring-boot 项目中使用1.4.0 版本(通过 Maven)中的 Java 库,没有任何自定义。
Swagger 页面在https://my-url.com/my-context-path/swagger-ui/index.html下生成
和https://my-url.com/my-context-path/v3/api-docs/下的 api-docs
这两个都有效,我可以联系到他们。到现在为止还挺好!
当简单地导航到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 错误代码。请注意,configUrl 似乎也缺少上下文路径。
任何想法为什么会发生这种情况以及如何解决?
这个 Github 问题似乎是同样的问题,但最后声明问题已解决:https : //github.com/springdoc/springdoc-openapi/issues/37,这是针对比我更早的版本。
好吧,问题是springdoc-openapi-ui不知道你的应用程序上下文路径,除非它是在 Spring Boot 中定义的,这可能对每个人来说都是不可能的。
X-Forwarded-Prefix希望它确实支持网关可以发送的非标准标头。
就我而言(Kubernetes),只需添加即可在图表中配置 Ingressnginx.ingress.kubernetes.io/x-forwarded-prefix: "true"
在您的应用程序配置中,您还需要指定
server:
forward-headers-strategy: framework
Run Code Online (Sandbox Code Playgroud)
使用 Spring 支持处理转发的标头。
资料来源:
https://github.com/kubernetes/ingress-nginx/issues/3670
https://github.com/springdoc/springdoc-openapi/issues/607
关于上下文路径的使用没有已知的问题。如您所知,#37 已解决,并且报告已证实这一点!
只需确保遵循在标准 spring-boot 应用程序上设置 context-path 的说明即可。
您可以在不同的演示示例中测试上下文路径的配置:
如果您有任何问题,您可以通过提供最小/可重现的示例或通过重现问题的单元测试来记录问题。
| 归档时间: |
|
| 查看次数: |
3906 次 |
| 最近记录: |