• gateway-路由过滤器 GatewayFilter


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

     

    Spring提供了31种不同的路由过滤器工厂。例如:

    名称                说明
    AddRequestHeader    给当前请求添加一个请求头
    RemoveRequestHeader    移除请求中的一个请求头
    AddResponseHeader    给响应结果中添加一个响应头
    RemoveResponseHeader    从响应结果中移除有一个响应头
    RequestRateLimiter    限制请求的流量

     

    实例:给所有进入userservice的请求添加一个请求头
    给所有进入userservice的请求添加一个请求头:Truth=itcast is freaking awesome!

    1.局部过滤器
    实现方式:在gateway中修改application.yml文件,给userservice的路由添加过滤器:

    spring:
        gateway:
          routes:
            - id: user-service # 路由标示,必须唯一
              uri: lb://userservice # 路由的目标地址
              predicates: ## 路由断言,也就是判断请求是否符合路由规则的条件
                - Path=/user/** # 路径断言,判断路径是否是以/user开头,如果是则符合
              filter: 
                - AddRequestHeader=Truth,zhangsan is freaking awesome! #添加请求头

     

    2.默认过滤器
    如果要对所有的路由都生效,则可以将过滤器工厂写到default下。格式如下:

    spring:
        gateway:
          routes:
            - id: user-service # 路由标示,必须唯一
              uri: lb://userservice # 路由的目标地址
              predicates: ## 路由断言,也就是判断请求是否符合路由规则的条件
                - Path=/user/** # 路径断言,判断路径是否是以/user开头,如果是则符合
              #filter: 
              #  - AddRequestHeader=Truth,zhangsan is freaking awesome! #添加请求头
            - id: order-service
              uri: lb://orderservice
              predicates:
                - Path=/order/**
                - Before=2037-01-20T17:42:47.789-07:00[Asia/Shanghai]
                #- After=2037-01-20T17:42:47.789-07:00[Asia/Shanghai]
          default-filters:
            - AddRequestHeader=Truth,lisi is freaking awesome! #添加请求头

     

    @RestController
    @RequestMapping("order")
    public class OrderController {
    
       @Autowired
       private OrderService orderService;
    
        @GetMapping("{orderId}")
        public Order queryOrderByUserId(@PathVariable("orderId") Long orderId,
                @RequestHeader(value = "Truth", required = false) String truth) {
            System.out.println("truth: " + truth);
            // 根据id查询订单并返回
            return orderService.queryOrderById(orderId);
        }
    }

    总结:
    过滤器的作用是什么?
    a.对路由的请求或响应做加工处理,比如添加请求头
    b.配置在路由下的过滤器只对当前路由的请求生效


    defaultFilters的作用是什么?
    a.对所有路由都生效的过滤器

  • 相关阅读:
    女子腰背疼痛案
    老人心悸心膝部无力屈伸不利案
    经方生姜泻心汤临床应用发挥
    电话求诊易误治
    女子乳房结块案
    小儿手足口案
    门纯德老先生经验
    男子肋部掣痛案
    加味潜降汤治疗阴虚阳亢之眩晕(来自网络)
    三叉神经痛与芎胡六虫汤
  • 原文地址:https://www.cnblogs.com/linjiqin/p/15366888.html
Copyright © 2020-2023  润新知