我正在使用最新的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),它适用于直接调用的单个服务。但是,当我尝试上面描述的分组时,标头不会传递给一个服务或第二个服务,它们会生成指向localhost的文档。
我怀疑我需要使用分组(https://springdoc.org/faq.html#how-can-i-define-multiple-openapi-definitions-in-one-spring-boot-project),但是我错过了一个很好的例子,即如何实现类似的效果(对来自不同微服务的文档进行分组)。示例仅显示一个外部地址或对本地端点进行分组。我希望,使用这种方法,我将能够传递头部。
发布于 2021-05-23 23:08:40
属性springdoc.swagger-ui.urls.*适用于配置外部(/v3/api-docs url),例如,如果您想要在单个应用程序内同意其他服务的所有端点。
它不会继承代理配置,但会使用: servers http://one.server/v3/api-docs和http://second.server/v3/api-docs中定义的服务器urls。
您希望在您的服务前面有一个代理,这取决于您的服务来处理您想要公开的正确服务器urls。
如果你想让它开箱即用,你可以使用一个像spring-cloud-gateway一样处理代理和路由的解决方案
https://stackoverflow.com/questions/64022679
复制相似问题