1. 基本介绍
网关开发中一般指的是: 应用的统一流量入口,负责转发请求到指定服务;
spring-cloud-gateway : 基于spring5.0, spring boot 2.0 , project reactor 等技术开发的网关,目的是为 微服务架构提供一种简单有效的统一的API路由管理方式;
1.1 通用网关功能
以下是网关的基本功能结构,围绕这几个点开始学习;
1.2 特有属性介绍
SpringCloud 官网介绍:
-
基于spring framework 5 , project reactor 和spring boot 2.0 ;
-
集成Hystrix 断路器 ;
-
集成 spring cloud discoveryClient (可以整合 eurake、ribbon, 实现负载均衡) ;
-
predicate 和 filter 作用于特定路由,易于编写的 Predicates 和filters ;
-
具有一些网关的高级功能: 动态路由、限流、路径重写;
Predicate (断言)
java8的 predicate,可以用它来匹配 Http 请求的任何内容, 例如 headers 或参数, 断言的输入类型是一个 ServerWebExchange ;
Route (路由)
由一个跳转URI、一组predicate、一组Filter 组成的处理单元;
Filter(过滤器)
拦截和修改请求;
2. 入门使用
2.1 代码配置
以接口登录认证为例,我们实现一个简单的网关需求;
需求简单描述:
/login /send_code 等 这些不需要认证的接口 我们以配置的形式 体现;
其他接口,统一都需要认证;
注:header中含有user_token ,标识已登录
核心实现类:AuthGatewayFilterFactory
@Component
public class AuthGatewayFilterFactory extends AbstractGatewayFilterFactory<AuthGatewayFilterFactory.Config> {
private Logger logger = LoggerFactory.getLogger(AuthGatewayFilterFactory.class);
/**
* 用户登录状态token
*/
private static final String USER_TOKEN = "user_token";
public Aut