SpringCloud 统一网关Gateway -- 路由的过滤器配置、默认过滤器

本节案例承接上节

1. 路由的过滤器配置


1.1 路由过滤器GatewayFilter

GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理:
在这里插入图片描述


1.2 过滤器工厂GatewayFilterFactory

Spring提供了31种不同的路由过滤器工厂。例如:
过滤器工厂GatewayFilterFactory
在这里插入图片描述
spring 过滤器工厂GatewayFilterFactory 官网

里面详细介绍了每种过滤器的详细作用和使用方法:
在这里插入图片描述


1.3 案例:给所有进入user-service的请求添加一个请求头

给所有进入user-service的请求添加一个请求头: Truth=itcast is freaking awesome!

实现方式:在gateway中修改application.yml文件,给user-service的路由添加过滤器:

在这里插入图片描述
在这里插入图片描述

server:
  port: 10010
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
    gateway:
      routes:
        - id: my-gateway # 路由标示,必须唯一
          uri: lb://user-service # 路由的目标地址
          predicates: # 路由断言,判断请求是否符合规则
            - Path=/user/** # 路径断言,判断路径是否是以/user开头,如果是则符合
          filters: # 过滤器
            - AddRequestHeader=Truth, Itcast is freaking awesome! # 添加请求头:AddRequestHeader是过滤工厂名字,Truth是key, Itcast is freaking awesome!是value
        - id: order-service
          uri: lb://order-service
          predicates:
            - Path=/order/**
            - After=2030-01-20T17:42:47.789-07:00[America/Denver]

然后重些UserController里面的方法,使得它可以打印过滤器新加的请求头信息

重写前:
在这里插入图片描述
重写后:
在这里插入图片描述

    @GetMapping("/{id}")
    public User queryById(@PathVariable("id") Long id,
                          @RequestHeader(value = "Truth", required = false) String truth) {
        System.out.println("truth: " + truth);
        return userService.queryById(id);
    }

然后重启服务,看打印信息:
在这里插入图片描述
成功打印出了信息
在这里插入图片描述


1.4 默认过滤器

上面的写法只是针对于一个路由,没办法对所有路由生效,如果要对所有的路由都生效,则可以将过滤器工厂写到default下。格式如下:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

server:
  port: 10010
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: MM-dd HH:mm:ss:SSS
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
    gateway:
      routes:
        - id: my-gateway # 路由标示,必须唯一
          uri: lb://user-service # 路由的目标地址
          predicates: # 路由断言,判断请求是否符合规则
            - Path=/user/** # 路径断言,判断路径是否是以/user开头,如果是则符合
        #          filters: # 过滤器
        #            - AddRequestHeader=Truth, Itcast is freaking awesome! # 添加请求头:AddRequestHeader是过滤工厂名字,Truth是key, Itcast is freaking awesome!是value
        - id: order-service
          uri: lb://order-service
          predicates:
            - Path=/order/**
            - After=2030-01-20T17:42:47.789-07:00[America/Denver]
      default-filters:
        - AddRequestHeader=Truth, Itcast is freaking awesome! # 添加请求头:AddRequestHeader是过滤工厂名字,Truth是key, Itcast is freaking awesome!是value

1.5 小结

在这里插入图片描述



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeJiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值