spring cloud gateway 实现 api 网关路由需引入 spring-cloud-starter-gateway 依赖(不可共存 spring-boot-starter-web),支持 yaml 静态路由(如 path 匹配、stripprefix 过滤)和 lb:// 动态服务发现路由,亦可通过 routelocatorbuilder 编程配置带鉴权等复杂逻辑的路由。

在 Spring Boot 中使用 Spring Cloud Gateway 实现 API 网关路由,核心是引入依赖、配置路由规则(可编程或配置文件方式),并确保服务发现或静态地址正确可用。
添加必要依赖
在 pom.xml 中引入 Spring Cloud Gateway 和对应 Spring Boot 版本兼容的依赖:
- 必须包含 spring-cloud-starter-gateway
- 若需服务发现(如 Nacos、Eureka),额外添加对应注册中心客户端(如 spring-cloud-starter-alibaba-nacos-discovery)
- 注意:Spring Cloud Gateway 不依赖 WebMVC,不能同时引入 spring-boot-starter-web,否则启动失败
基础路由配置(YAML 方式)
在 application.yml 中定义静态路由,例如将请求 /user/** 转发到 http://localhost:8081:
spring:
cloud:
gateway:
routes:
- id: user-service
uri: http://localhost:8081
predicates:
- Path=/user/**
filters:
- StripPrefix=1
- id 是路由唯一标识
- uri 支持 http、lb(负载均衡,如 lb://service-name)、forward(内部转发)等协议
- predicates 是匹配条件,常用 Path、Method、Header、Query 等
- filters 用于修改请求/响应,StripPrefix=1 表示去掉第一级路径前缀
集成服务发现动态路由
若后端服务已注册到 Nacos 或 Eureka,可直接用服务名路由:
spring:
cloud:
gateway:
routes:
- id: order-service
uri: lb://order-service
predicates:
- Path=/api/order/**
- uri 使用 lb://xxx 表示启用 Spring Cloud LoadBalancer 负载均衡
- 需确保网关自身已开启服务发现(如加 @EnableDiscoveryClient 或配置 spring.cloud.nacos.discovery.enabled=true)
- 服务名必须与注册中心中一致,大小写敏感
自定义全局过滤器或路由断言
可通过 Java Config 编写逻辑更灵活的路由规则。例如添加鉴权过滤器:
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("auth-route", r -> r.path("/api/**")
.filters(f -> f.filter(new AuthGlobalFilter()))
.uri("lb://backend-service"))
.build();
}
- 用 RouteLocatorBuilder 构建路由,适合复杂判断(如 Header 验证、灰度标记识别)
- 自定义 GlobalFilter 可统一处理跨域、日志、Token 解析等
- 优先级通过 @Order 注解或实现 Ordered 接口控制
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











