You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在API网关后的Spring Boot微服务中配置Swagger避免Docker内部URL

解决Swagger请求地址指向Docker内部主机名的问题

方案一:直接配置微服务SpringDoc使用网关地址

在每个微服务的配置文件(application.yml或application.properties)中添加以下配置,强制Swagger UI生成的请求URL指向API网关地址:

YAML格式

springdoc:
  swagger-ui:
    server-url: http://localhost:8081
  api-docs:
    server-url: http://localhost:8081

Properties格式

springdoc.swagger-ui.server-url=http://localhost:8081
springdoc.api-docs.server-url=http://localhost:8081

该配置会覆盖SpringDoc默认使用的服务注册地址,直接将请求URL前缀设置为网关地址。

方案二:通过网关聚合所有服务的Swagger文档

如果希望统一通过网关的Swagger UI访问所有微服务的API文档,可在API网关中配置SpringDoc的文档聚合:

  1. 网关中添加与微服务版本兼容的SpringDoc依赖
  2. 在网关的配置文件中添加:
springdoc:
  api-docs:
    enabled: true
  swagger-ui:
    enabled: true
    urls:
      - name: 客户服务
        url: /customer/v3/api-docs
      # 按此格式添加其他微服务的api-docs路径,路径需匹配网关转发到对应服务的前缀

通过网关访问Swagger UI时,生成的请求URL会自动使用网关地址,因为Swagger UI本身部署在网关节点上。

补充说明

  • 若部署在非本地环境,需将localhost:8081替换为网关的公网/可访问地址
  • 确保网关已正确配置路由规则,比如将/customer/**转发到对应的客户微服务

内容的提问来源于stack exchange,提问作者Ayyoub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 03:38:14