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


相关文章
|
10月前
|
Java Spring
Spring Cloud Gateway 源码剖析之Filter Chain过滤器链
Spring Cloud Gateway 源码剖析之Filter Chain过滤器链
171 0
|
Java Spring
Spring Cloud Alibaba - 24 Gateway-路由、断言(Predicate)、过滤器(Filter)初体验
Spring Cloud Alibaba - 24 Gateway-路由、断言(Predicate)、过滤器(Filter)初体验
93 0
|
Java Spring
spring cloud gateway Filter拦截器
spring cloud gateway Filter拦截器
589 0
|
监控 负载均衡 Cloud Native
云原生之 Gateway 的 Filter 过滤器
云原生之 Gateway 的 Filter 过滤器
云原生之 Gateway 的 Filter 过滤器
|
Java 网络架构 微服务
SpringCloud06_Gateway的概述、工程案例代码、微服务动态路由、Predicate的使用、详解Filter(四)
⑦. Filter的使用 ①. Filter的概述 ②. Spring Cloud Gateway的Filter ③. 自定义过滤器(自定义全局GlobalFilter)
154 0
SpringCloud06_Gateway的概述、工程案例代码、微服务动态路由、Predicate的使用、详解Filter(四)
|
网络架构 微服务
|
负载均衡 Java 网络架构
|
监控 安全 Java
SpringCloud06_Gateway的概述、工程案例代码、微服务动态路由、Predicate的使用、详解Filter(一)
①. gateway的概述 ②. 路由、断言、过滤器 ③. 新建module9527 yml的配置方式
157 0
SpringCloud06_Gateway的概述、工程案例代码、微服务动态路由、Predicate的使用、详解Filter(一)
filter operation implementation in Gateway framework
Created by Wang, Jerry, last modified on Dec 28, 2015 data type is singleton field type and actual value must be compatible
filter operation implementation in Gateway framework
filter operation implementation in Gateway framework
filter operation implementation in Gateway framework
filter operation implementation in Gateway framework

热门文章

最新文章