kubernetes - Springdoc(Swagger)代理后的分组配置
问题描述
我正在使用最新的 springdoc 库来创建一个公共端点,将所有 Swagger 配置集中在一个地方。Kubernetes 中部署了一堆微服务,因此将文档放在一个地方会很方便。最简单的方法是使用这样的东西(https://springdoc.org/faq.html#how-can-i-define-groups-using-applicationyml):
springdoc:
api-docs:
enabled: true
swagger-ui:
disable-swagger-default-url: true
urls:
- name: one-service
url: 'http://one.server/v3/api-docs'
- name: second-service
url: 'http://second.server/v3/api-docs'
而且效果很好,我可以从右上角的列表中选择。问题是它不能通过代理工作。根据文档,我需要设置一些标题(https://springdoc.org/faq.html#how-can-i-deploy-springdoc-openapi-ui-behind-a-reverse-proxy),它适用于单一服务直接调用。但是当我尝试上述分组时,标头不会传递给一个服务或第二个服务,它们会生成指向本地主机的文档。
我怀疑我需要使用分组(https://springdoc.org/faq.html#how-can-i-define-multiple-openapi-definitions-in-one-spring-boot-project)但我错过了很好的例子,如何达到类似的效果(对来自不同微服务的文档进行分组)。示例仅显示一个外部地址,或对本地端点进行分组。我希望,使用这种方法,我将能够传递标题。
解决方案
propertiesspringdoc.swagger-ui.urls.*
适合配置外部(/v3/api-docs url),例如,如果您想在一个应用程序中聚合其他服务的所有端点。
它不会继承代理配置,但会使用您在服务器http://one.server/v3/api-docs和http://second.server/v3/api-docs中定义的服务器 url 。
您希望在您的服务前面有一个代理,由您的服务来处理您想要公开的正确服务器 URL。
如果您希望它开箱即用,您可以使用处理代理和路由的解决方案,例如spring-cloud-gateway
推荐阅读
- python - 使用 Django ORM 进行多重连接
- sql - 分配计数到最大值
- flutter - 暂停或暂停时 Flutter 应用程序上的 Dart 计时器
- javascript - Firebase 存储下载 url 未接收/不工作
- three.js - Three.js 改变顶点位置最高效的方法是什么?
- python - python:创建校验位函数
- sql-server - 如何在 SQL Graph 表中创建递归边?
- laravel - Laravel 的工作失败了,正在开发中
- python-3.x - GitHub Actions:如何在 Docker 操作中使用来自 GitHub 注册表的 Docker 映像?
- stata - 如何执行 Koyck 滞后变换