Spring Cloud GateWay 简介与使用
1.Spring Cloud GateWay是什么
2.Spring Cloud GateWay 作用
作为访问内部系统唯一的入口,除了提供内部的路由中转外,我们还可以在此基础上提供
身份验证、监控、负载均衡、限流、降级、鉴权 等功能
3.快速开始GateWay
1.术语
Route:网关的基本组成部分。它由一个ID、一个目标URI、一个谓词集合和一个过滤器 集合定义。如果聚合谓词为真,则匹配路由
Predicate:这是一个Java 8函数谓词
输入类型是SpringFramework ServerWebExchange
这允许您匹配来自HTTP请求的任何内容例如头或参数
Filter:这些是使用特定工厂构造的GatewayFilter实例。 在这里,您可以在发送下游请求之前或之后修改请求和响应
2.快速开始案例
2.1 新建网关项目,配置yml文件
spring: cloud: gateway: routes: // 路由器唯一标识 - id: order_route // 断言 predicates: // 路径匹配 uri + order/ 下所有请求则会为真,进行路由匹配 - Path=/order/** // 请求uri uri: http://www.fanwenjun.com // 过滤器 filters: // 对下发的请求会剥离1个路径个数 - StripPrefix=1 server: port: 80
2.2 启动网关服务
2.3 启动order服务
3.网关工作原理
1、客户端向 Spring Cloud GateWay发送一个请求
2、如果网关处理程序映射确定一个请求路由匹配,它将被发送到 GateWay Web Handler
3、这个处理程序通过特定于请求的筛选器链式运行请求。其中虚线部分指的是过滤器可以在发送代理请求之前和之后运行逻辑。执行所有的"pre"过滤逻辑
4、发出代理请求,运行"POST"筛选器逻辑
4.自定义拦截器
/** * @author Jun * @version 1.0.0 * @ClassName MyFilter.java * @Description TODO 自定义网关拦截器 * @createTime 2021年08月07日 15:59:00 */ @Component public class MyFilter implements Ordered, GlobalFilter { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { // 获取请求 ServerHttpRequest request = exchange.getRequest(); // 获取请求参数集 MultiValueMap<String, String> queryParams = request.getQueryParams(); List<String> ids = queryParams.get("id"); // TODO 业务逻辑判断后,可选择继续通行或返回response // 通行 return chain.filter(exchange); } @Override public int getOrder() { // 拦截器请求顺序,返回值越小,优先级越高 return 0; } }