Spring Cloud GateWay 简介与使用

1.Spring Cloud GateWay是什么

这个项目提供了一个在Spring WebFlux上构建API网关的库。Spring Cloud Gateway旨在提供一种简单而有效的方式来路由到api,并为它们提供横切关注点,如:安全性、监控/指标和弹性。

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;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值