Gateway中Filter的使用

简介: 路由过滤器可用于修改进入的HTTP请求和返回的HTTP响应,路由过滤器只能指定路由进行使用。 Spring Cloud Gateway 内置了多种路由过滤器,他们都由GatewayFilter的工厂类来产生

是什么



6839683a9e944ca5ab812cb3a90a94ae.png


路由过滤器可用于修改进入的HTTP请求和返回的HTTP响应,路由过滤器只能指定路由进行使用。

Spring Cloud Gateway 内置了多种路由过滤器,他们都由GatewayFilter的工厂类来产生


Spring Cloud Gateway的Filter



生命周期:pre      post

种        类:

GatewayFilter


https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/#the-addrequestparameter-gatewayfilter-factory

4eb2cb12c52646ef96bc2c27851a25f8.pngc50334cd0bfb492e94f354d5d021879f.png


常用的GatewayFilter

AddRequestParameter


   routes:
        - id: payment_routh #payment_route #路由的ID,没有固定规则但要求唯一,建议配合服务名
          uri: lb://cloud-provider-payment #匹配后的目标服务地址,供服务的路由地址
          #uri: http://localhost:8001 #匹配后提供服务的路由地址
          filters:
            - AddRequestParameter=X-Request-Id,1024 #过滤器工厂会在匹配的请求头加上一对请求头,名称为X-Request-Id值为1024


自定义过滤器

implements GlobalFilter,Ordered


@Component //必须加,必须加,必须加
public class MyLogGateWayFilter implements GlobalFilter,Ordered
{
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain)
    {
        System.out.println("time:"+new Date()+"\t 执行了自定义的全局过滤器: "+"MyLogGateWayFilter"+"hello");
        String uname = exchange.getRequest().getQueryParams().getFirst("uname");
        if (uname == null) {
            System.out.println("****用户名为null,无法登录");
            exchange.getResponse().setStatusCode(HttpStatus.NOT_ACCEPTABLE);
            return exchange.getResponse().setComplete();
        }
        return chain.filter(exchange);
    }
    @Override
    public int getOrder()
    {
        return 0;
    }
}


相关文章
|
Java Spring
Spring Cloud Gateway 源码剖析之Filter Chain过滤器链
Spring Cloud Gateway 源码剖析之Filter Chain过滤器链
283 0
|
Java Spring
Spring Cloud Alibaba - 24 Gateway-路由、断言(Predicate)、过滤器(Filter)初体验
Spring Cloud Alibaba - 24 Gateway-路由、断言(Predicate)、过滤器(Filter)初体验
123 0
|
Java Spring
spring cloud gateway Filter拦截器
spring cloud gateway Filter拦截器
626 0
|
监控 负载均衡 Cloud Native
云原生之 Gateway 的 Filter 过滤器
云原生之 Gateway 的 Filter 过滤器
云原生之 Gateway 的 Filter 过滤器
|
Java 网络架构 微服务
SpringCloud06_Gateway的概述、工程案例代码、微服务动态路由、Predicate的使用、详解Filter(四)
⑦. Filter的使用 ①. Filter的概述 ②. Spring Cloud Gateway的Filter ③. 自定义过滤器(自定义全局GlobalFilter)
172 0
SpringCloud06_Gateway的概述、工程案例代码、微服务动态路由、Predicate的使用、详解Filter(四)
|
网络架构 微服务
|
负载均衡 Java 网络架构
|
监控 安全 Java
SpringCloud06_Gateway的概述、工程案例代码、微服务动态路由、Predicate的使用、详解Filter(一)
①. gateway的概述 ②. 路由、断言、过滤器 ③. 新建module9527 yml的配置方式
183 0
SpringCloud06_Gateway的概述、工程案例代码、微服务动态路由、Predicate的使用、详解Filter(一)
|
监控 Java 微服务
java版电子商务spring cloud分布式微服务b2b2c社交电商-spring cloud gateway之filter篇
filter的作用和生命周期 由filter工作流程点,可以知道filter有着非常重要的作用,在“pre”类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等,在“post”类型的过滤器中可以做响应内容、响应头的修改,日志的输出,流量监控等。
963 0
|
Java Shell 数据格式
Spring Cloud Gateway 之 Filter
网关经常需要对路由请求进行过滤,进行一些操作,如鉴权之后构造头部之类的,过滤的种类很多,如增加请求头、增加请求 参数 、增加响应头和断路器等等功能,这就用到了Spring Cloud Gateway 的 Filter。
2849 0