erp-java/gateway/README.md

140 lines
3.4 KiB
Markdown

# 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 <token>
```
下游服务可获取的头部:
- `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