2026-02-03 21:37:19
71
上个章节已经完成服务之间的调用
[链接],本章节继续探索。
spring Boot 版本3.3.7
nacos 版本3.1.1
Spring Cloud 版本2023.0.3
Spring Cloud Alibaba 版本2023.0.3.4
• common 模块:存放公共工具类、实体、常量等
• home 模块:Web 应用,端口 8081
• user 模块:Web 应用,端口 8082
• 实现目标:新建网关服务,通过规则访问user和home服务
• 目录结构

gateway/pom.xml gateway/src/main/java/com/tsphp/gateway/GatewayApplication.java gateway/src/main/java/resources/application.yml 1)启动Nacos服务:

2)启动Home服务
3)启动User服务
4)启动Gateway服务

• 上图标识 Nacos 已经注册了当前三个服务
•
• 测试结果:
• 直接访问user服务:curl http://localhost:8082/user/info/2
• 返回:{"errcode":0,"errmsg":"","data":"userInfo:8082:2"}
• 网关访问user服务:curl http://localhost:9000/user/info/2
• 返回:{"errcode":0,"errmsg":"","data":"userInfo:8082:2"}
•
• 两个结果一致,网关已经正确路由到user服务了
gitee源码: https://gitee.com/wangshi90/springboot
今天为微服务架构引入了 API 网关,显著提升了系统的安全性与可护性:
1)只需对外暴露网关端口(如 9000),所有业务服务(如 user-service、home-service)均可部署在内网,无需直接对外;
2)路由集中管理,新增或调整服务路径只需修改网关配置,无需改动客户端或服务本身。
留两个值得深入思考的问题:
1)如何通过网关实现“部分接口对外、部分接口仅限内部调用”?
(例如:/api/public/** 允许外部访问,/api/internal/** 仅允许服务间调用)
2)如何在转发请求时自动剥离网关路径前缀,避免将 /user/xxx 原样传给后端?
(即:外部请求 /user/profile → 后端实际接收 /profile)