# API Gateway ## 概述 API Gateway 是 DeepData 的统一入口,基于 Spring Cloud Gateway 实现,负责路由转发、JWT 认证和限流。 ## 架构 ``` backend/api-gateway/ ├── src/main/java/com/deepdata/gateway/ │ ├── config/ # Gateway 配置 │ ├── filter/ # JWT 认证过滤器 │ └── route/ # 路由定义 └── src/main/resources/ └── application.yml # Gateway 配置 ``` ## 配置 ### 端口 - **默认**: 8080 - **Nacos 发现端口**: 30000 ### 关键配置 ```yaml spring: application: name: deepdata-gateway cloud: nacos: discovery: port: 30000 server-addr: ${NACOS_ADDR} username: consul password: deepdata: jwt: secret: ${JWT_SECRET} expiration-seconds: 3600 ``` ## 功能 ### 1. 路由转发 - 将前端请求转发到对应的后端服务 - 支持负载均衡 - 路径重写 ### 2. JWT 认证 - 基于 JWT Token 的认证 - Token 验证和过期检查 - 用户上下文传递 ### 3. 限流 - (如配置)请求频率限制 - 防止 API 滥用 ## 快速开始 ### 前置条件 - JDK 21+ - Maven 3.8+ - Nacos 服务(如果使用服务发现) ### 构建 ```bash cd backend/api-gateway mvn clean install ``` ### 运行 ```bash cd backend/api-gateway mvn spring-boot:run ``` ## 开发 ### 添加新路由 在 `application.yml` 或通过 Nacos 配置路由规则: ```yaml spring: cloud: gateway: routes: - id: data-management uri: lb://data-management-service predicates: - Path=/api/data-management/** filters: - StripPrefix=3 ``` ### 添加自定义过滤器 创建 `GlobalFilter` 或 `GatewayFilter`: ```java @Component public class AuthFilter implements GlobalFilter { @Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { // 过滤逻辑 return chain.filter(exchange); } } ``` ## 测试 ### 测试路由转发 ```bash curl http://localhost:8080/api/data-management/datasets ``` ### 测试 JWT 认证 ```bash curl -H "Authorization: Bearer " http://localhost:8080/api/protected-endpoint ``` ## 文档 - **Spring Cloud Gateway 文档**: https://docs.spring.io/spring-cloud-gateway/ - **Nacos 发现**: https://nacos.io/ ## 相关链接 - [后端 README](../README.md) - [主应用 README](../services/main-application/README.md)