# gateway-demo **Repository Path**: mopel/gateway-demo ## Basic Information - **Project Name**: gateway-demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-29 - **Last Updated**: 2025-09-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Gateway Demo - Spring Cloud Gateway 学习项目 ## 项目简介 本项目是一个基于 Spring Cloud Gateway 的多模块微服务学习项目,旨在演示微服务网关的核心功能和最佳实践。项目通过构建一个包含用户服务和订单服务的简单电商场景,帮助开发者理解 Spring Cloud Gateway 的路由、过滤、负载均衡等核心特性。 ## 技术栈 - **JDK**: 1.8+ - **Spring Boot**: 2.7.18 - **Spring Cloud**: 2021.0.9 - **Spring Cloud Alibaba**: 2021.0.5.0 - **Spring Cloud Gateway**: 3.1.x - **Nacos**: 2.1.x(服务注册发现 + 配置中心) - **MySQL**: 8.0 - **MyBatis Plus**: 3.5.3.1 - **Redis**: 6.2 - **Maven**: 3.8+ ## 项目架构 ``` gateway-demo/ ├── common-dependencies/ # 依赖管理模块 ├── common-core/ # 通用核心模块 ├── gateway-service/ # 网关服务 (端口: 8080) ├── user-service/ # 用户服务 (端口: 8081) ├── order-service/ # 订单服务 (端口: 8082) ├── sql/ # 数据库脚本 └── README.md ``` ## 模块说明 ### 1. common-dependencies - 统一管理所有依赖版本 - 提供基础依赖配置 ### 2. common-core - 通用工具类(JWT、密码加密等) - 统一响应结果封装 - 公共枚举和常量 ### 3. gateway-service - Spring Cloud Gateway 网关服务 - 路由转发和负载均衡 - 全局认证过滤器 - 全局日志过滤器 - 跨域配置 ### 4. user-service - 用户注册、登录 - JWT Token 生成和验证 - 用户信息管理 ### 5. order-service - 订单创建、查询 - 订单状态管理 - 库存管理 - 服务间调用 ## 快速开始 ### 1. 环境准备 #### 安装 Nacos ```bash # 下载 Nacos 2.1.x wget https://github.com/alibaba/nacos/releases/download/2.1.2/nacos-server-2.1.2.tar.gz tar -xzf nacos-server-2.1.2.tar.gz cd nacos/bin # 启动 Nacos (单机模式) # Windows startup.cmd -m standalone # Linux/Mac sh startup.sh -m standalone ``` 访问 Nacos 控制台:http://localhost:8848/nacos - 用户名:nacos - 密码:nacos #### 安装 MySQL ```sql -- 创建数据库 CREATE DATABASE gateway_demo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` #### 安装 Redis ```bash # 启动 Redis redis-server ``` ### 2. 数据库初始化 执行项目根目录下的 SQL 脚本: ```bash mysql -u root -p gateway_demo < sql/init.sql ``` ### 3. 修改配置 根据实际环境修改各服务的 `application.yml` 配置文件: - 数据库连接信息 - Redis 连接信息 - Nacos 服务地址 ### 4. 启动服务 按以下顺序启动服务: ```bash # 1. 启动网关服务 cd gateway-service mvn spring-boot:run # 2. 启动用户服务 cd user-service mvn spring-boot:run # 3. 启动订单服务 cd order-service mvn spring-boot:run ``` 或者在项目根目录执行: ```bash # 编译所有模块 mvn clean compile # 分别启动各个服务 ``` ### 5. 验证服务 #### 检查服务注册 访问 Nacos 控制台,确认所有服务已注册成功。 #### 测试 API **用户注册** ```bash curl -X POST http://localhost:8080/api/user/register \ -H "Content-Type: application/json" \ -d '{ "username": "demo", "password": "123456", "email": "demo@example.com" }' ``` **用户登录** ```bash curl -X POST http://localhost:8080/api/user/login \ -H "Content-Type: application/json" \ -d '{ "username": "demo", "password": "123456" }' ``` **创建订单**(需要先登录获取 token) ```bash curl -X POST http://localhost:8080/api/order/create \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_JWT_TOKEN" \ -d '{ "productId": 1, "quantity": 1, "totalAmount": 5999.00 }' ``` ## API 文档 ### 用户服务 API | 接口 | 方法 | 路径 | 描述 | |------|------|------|------| | 用户注册 | POST | /api/user/register | 用户注册 | | 用户登录 | POST | /api/user/login | 用户登录 | | 获取用户信息 | GET | /api/user/profile | 获取当前用户信息 | | 更新邮箱 | PUT | /api/user/email | 更新用户邮箱 | ### 订单服务 API | 接口 | 方法 | 路径 | 描述 | |------|------|------|------| | 创建订单 | POST | /api/order/create | 创建新订单 | | 订单列表 | GET | /api/order/list | 获取订单列表 | | 订单详情 | GET | /api/order/{orderId} | 获取订单详情 | | 取消订单 | PUT | /api/order/{orderId}/cancel | 取消订单 | ## 监控端点 - **网关服务监控**: http://localhost:8080/actuator - **用户服务监控**: http://localhost:8081/actuator - **订单服务监控**: http://localhost:8082/actuator - **数据库监控**: http://localhost:8081/druid (用户名/密码:admin/admin) ## API 文档 项目集成了 SpringDoc OpenAPI 3.x,提供了完整的 Swagger API 文档: - **用户服务 API 文档**: http://localhost:8081/swagger-ui/index.html - **订单服务 API 文档**: http://localhost:8082/swagger-ui/index.html ### Swagger 功能特性 - ✅ 自动生成 API 文档 - ✅ 在线接口测试 - ✅ 请求/响应示例 - ✅ 参数说明和验证 - ✅ 接口分组管理 ### 使用说明 1. 启动对应的服务 2. 访问 Swagger UI 地址 3. 选择要测试的接口 4. 填写请求参数 5. 点击 "Try it out" 执行测试 **注意**: 对于需要认证的接口,请先通过登录接口获取 JWT token,然后在 Swagger UI 的 "Authorize" 按钮中配置 Bearer token。 ## 项目特性 ### 网关功能 - ✅ 路由转发 - ✅ 负载均衡 - ✅ JWT 认证过滤器 - ✅ 全局日志记录 - ✅ 跨域处理 - ✅ 服务发现集成 ### 服务治理 - ✅ Nacos 服务注册发现 - ✅ Nacos 配置中心 - ✅ 服务间调用 - ✅ 统一异常处理 - ✅ 统一响应格式 ### 数据管理 - ✅ MyBatis Plus 集成 - ✅ 数据库连接池 - ✅ 事务管理 - ✅ 分页查询 ## 学习要点 1. **Spring Cloud Gateway 核心概念** - Route(路由) - Predicate(断言) - Filter(过滤器) 2. **微服务架构模式** - 服务拆分 - 服务注册发现 - 配置中心 - 网关模式 3. **安全认证** - JWT Token - 网关统一认证 - 权限控制 4. **可观测性** - 日志记录 - 健康检查 - 监控指标 ## 常见问题 ### Q: 服务启动失败? A: 检查以下几点: 1. Nacos 是否正常启动 2. MySQL 和 Redis 是否正常运行 3. 配置文件中的连接信息是否正确 4. 端口是否被占用 ### Q: 网关路由不生效? A: 检查以下几点: 1. 服务是否成功注册到 Nacos 2. 网关配置中的路由规则是否正确 3. 服务名称是否匹配 ### Q: JWT Token 验证失败? A: 检查以下几点: 1. Token 是否正确传递 2. Token 是否过期 3. 请求头格式是否正确(Bearer Token) ## 贡献指南 欢迎提交 Issue 和 Pull Request 来改进这个项目! ## 许可证 MIT License ## 联系方式 如有问题,请提交 Issue 或联系项目维护者。