# ERP API Gateway 基于Spring Cloud Gateway的统一API网关 ## 功能特性 - ✅ **Nacos服务发现** - 自动注册与发现微服务 - ✅ **动态路由** - 支持Nacos配置中心的动态路由更新 - ✅ **JWT认证** - 统一认证鉴权 - ✅ **Sentinel限流熔断** - 保护下游服务 - ✅ **Redis分布式限流** - 基于令牌桶算法 - ✅ **统一日志** - 请求/响应完整日志 - ✅ **跨域处理** - CORS配置 ## 项目结构 ``` gateway/ ├── pom.xml ├── src/main/ │ ├── java/com/erp/gateway/ │ │ ├── GatewayApplication.java │ │ ├── config/ │ │ │ ├── GatewayConfig.java # 网关配置 │ │ │ ├── CorsConfig.java # 跨域配置 │ │ │ ├── SecurityConfig.java # 安全配置 │ │ │ ├── JwtUtil.java # JWT工具类 │ │ │ └── RateLimitConfig.java # 限流Key配置 │ │ ├── filter/ │ │ │ ├── AuthFilter.java # 认证过滤器 │ │ │ └── LogFilter.java # 日志过滤器 │ │ ├── handler/ │ │ │ └── JsonErrorHandler.java # JSON错误处理 │ │ └── sentinel/ │ │ └── SentinelConfig.java # Sentinel配置 │ └── resources/ │ ├── application.yml # 主配置 │ ├── bootstrap.yml # Nacos引导配置 │ ├── logback-spring.xml # 日志配置 │ └── nacos/ │ └── gateway-config.yml # Nacos中心化配置 └── docker/ ├── Dockerfile └── docker-compose.yml ``` ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.8+ - Redis - Nacos 2.x - Sentinel Dashboard ### 构建 ```bash mvn clean package -DskipTests ``` ### 运行 ```bash java -jar target/gateway-1.0.0.jar ``` ### Docker部署 ```bash cd docker docker-compose up -d ``` ## 环境变量 | 变量 | 默认值 | 说明 | |------|--------|------| | NACOS_SERVER | localhost:8848 | Nacos地址 | | NACOS_USERNAME | nacos | Nacos用户名 | | NACOS_PASSWORD | nacos | Nacos密码 | | REDIS_HOST | localhost | Redis地址 | | REDIS_PORT | 6379 | Redis端口 | | JWT_SECRET | - | JWT密钥(256位) | | SENTINEL_DASHBOARD | localhost:8080 | Sentinel控制台 | | GATEWAY_PORT | 8080 | 网关端口 | ## 路由配置 | 服务 | 路径 | 下游服务 | |------|------|----------| | 认证服务 | /api/auth/** | erp-auth | | 用户服务 | /api/user/** | erp-user | | 订单服务 | /api/order/** | erp-order | | 商品服务 | /api/product/** | erp-product | | 仓库服务 | /api/warehouse/** | erp-warehouse | ## API端点 ### 认证 - `POST /api/auth/login` - 用户登录 - `POST /api/auth/register` - 用户注册 - `POST /api/auth/refresh` - 刷新Token ### 健康检查 - `GET /actuator/health` - 健康状态 ## JWT认证 请求头格式: ``` Authorization: Bearer ``` 下游服务可获取的头部: - `X-User-Name` - 用户名 - `X-User-Roles` - 用户角色(逗号分隔) ## 限流策略 | API | QPS限制 | |-----|---------| | /api/auth/** | 200 | | /api/user/** | 100 | | /api/order/** | 100 | | /api/product/** | 100 | | /api/warehouse/** | 100 | ## 监控 - **Actuator**: `/actuator/gateway`, `/actuator/health` - **Sentinel**: 连接Sentinel Dashboard查看实时数据 ## License MIT