Docker Compose服务间可ping通但API网关转发请求返回空响应求助
问题根因
你遇到的空响应问题核心是Spring Cloud Gateway的路由配置缺少HTTP协议声明:
- Spring Cloud Gateway要求路由
uri参数必须指定通信协议,你当前配置只填了books-ms:8000,网关无法识别该用什么协议转发请求,才会返回无内容的200响应。 - 额外的小问题:你配置了两个id同为
user_service的路由,路由id是唯一标识,重复id会导致配置加载异常,也可能引发意料之外的路由匹配问题。
解决方案
修改网关的application.yml路由配置,所有uri前补充http://协议头,同时修改重复的路由id:
server: port: 8080 spring: cloud: gateway: routes: - id: user_service uri: 'http://login-ms:8001' predicates: - Path=/api/users/** - id: user_service_business # 修正重复id uri: 'http://login-ms:8001' predicates: - Path=/api/business/** - id: book_service uri: 'http://books-ms:8000' predicates: - Path=/api/books/** - id: payment_service uri: 'http://payment-ms:8002' predicates: - Path=/api/payment/**
验证操作
修改配置后重新构建网关镜像,或者将配置文件通过卷挂载到网关容器内,重启网关服务后再访问localhost:8080/api/books即可拿到正常的图书列表响应。
内容的提问来源于stack exchange,提问作者perrywinkle
相关产品推荐
相关产品推荐

