微服务项目中Reservation Service经Gateway调用报404错误排查
问题诊断与解决方法
核心原因
导致Reservation Service通过API Gateway访问返回404的关键问题出在服务配置文件的拼写和属性名错误,具体如下:
- Eureka配置拼写错误:配置中误写为
euraka.client.fetch.registry,正确单词是eureka,且标准属性名应为eureka.client.fetch-registry(采用短横线分隔,而非点分隔)。 - Eureka属性名大小写错误:
eureka.client.service-url.defaultzone中的defaultzone需改为defaultZone(Spring Cloud配置属性对驼峰大小写敏感),同时Eureka Server地址结尾缺少斜杠,可能影响服务与注册中心的通信完整性。 - 尽管Eureka控制台显示服务已注册,但上述配置错误会导致服务无法正确同步注册表元数据,API Gateway无法正常路由请求到可用的Reservation Service实例。
解决步骤
1. 修正Reservation Service配置文件
将配置替换为正确版本:
server.port=8082 spring.application.name=reservation-service eureka.client.register-with-eureka=true eureka.client.fetch-registry=true eureka.client.service-url.defaultZone=http://localhost:8761/eureka/ spring.datasource.url=jdbc:mysql://localhost:3306/projectschema spring.datasource.username=root spring.datasource.password=12345678Aa spring.jpa.generate-ddl=true spring.jpa.defer-datasource-initialization=true spring.jpa.hibernate.ddl-auto=update spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
关键修正项:
- 修正
euraka拼写为eureka - 将
fetch.registry改为标准属性fetch-registry - 修正
defaultzone为defaultZone - 为Eureka地址添加结尾斜杠
/
2. 重启服务
- 先重启Reservation Service,确保新配置生效,服务能正常与Eureka Server同步注册表
- 重启API Gateway,让网关拉取最新的服务实例信息
3. 验证与排查
- 直接访问Reservation Service本地地址
http://localhost:8082/reservation/reservation,确认服务自身接口正常 - 再次调用网关地址
http://localhost:9000/reservation/reservation,检查是否返回预期内容 - 若仍有问题,查看API Gateway日志,确认请求是否正确转发到Reservation Service实例
内容的提问来源于stack exchange,提问作者MatildaEliz
相关产品推荐
相关产品推荐

