当前位置: 首页 > news >正文

SpringCloud入门(十一)路由过滤器和路由断言工厂

一、路由过滤器


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

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

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

名称           |     说明                    

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

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

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

只需要修改gateway服务的application.yml文件,添加路由过滤即可:

spring:cloud:gateway:routes:- id: user-service uri: lb://userservice predicates: - Path=/user/** filters: # 过滤器- AddRequestHeader=Truth, IT is freaking awesome! # 添加请求头

当前过滤器写在userservice路由下,因此仅仅对访问userservice的请求有效。
 

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

spring:cloud:gateway:routes:- id: user-service uri: lb://userservice predicates: - Path=/user/**default-filters: # 默认过滤项- AddRequestHeader=Truth, IT is freaking awesome! 

二、路由断言工厂

路由断言工厂Route Predicate Factory,我们在配置文件中写的断言规则只是字符串,这些字符串会被Predicate Factory读取并处理,转变为路由判断的条件

 例如Path=/user/**是按照路径匹配,这个规则是由org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory类来 处理的,像这样的断言工厂在SpringCloudGateway还有:

 名称   - 说明       - 示例                

     - After      : 是某个时间点后的请求           
示例:  After=2037-01-20T17:42:47.789-07:00[America/Denver]       :
- Before     : 是某个时间点之前的请求         
示例:  Before=2031-04-13T15:14:47.433+08:00[Asia/Shanghai]       :
- Between    : 是某两个时间点之前的请求       
示例:  Between=2037-01-20T17:42:47.789-07:00[America/Denver],  2037-01-21T17:42:47.789-07:00[America/Denver] :
- Cookie     : 请求必须包含某些cookie         
示例: Cookie=chocolate, ch.p                                     :
- Header     : 请求必须包含某些header         
示例: Header=X-Request-Id, \d+                                   :
- Host       : 请求必须是访问某个host(域名) 
示例:  Host=**.somehost.org,**.anotherhost.org                   :
- Method     : 请求方式必须是指定方式         
示例: Method=GET,POST                                            :
- Path       : 请求路径必须符合指定规则       
示例: Path=/red/{segment},/blue/**                               :
- Query      : 请求参数必须包含指定参数       
示例: Query=name, Jack或者-  Query=name                          :
- RemoteAddr : 请求者的ip必须是指定范围       
示例: RemoteAddr=192.168.1.1/24                                  :
- Weight     : 权重处理                               

        路由工厂作用(PredicateFactory):读取用户配置的断言规则,而后解析成判断条件,对用户请求做判断


http://www.mrgr.cn/news/41929.html

相关文章:

  • MHA携手Atlas:打造高效读写分离解决方案,引领数据库性能飞跃
  • 深度学习数据增强的常用方法
  • 【Matlab绘图】从Excel导入表格并进行三维绘图
  • leetcode 数组 27.移除元素
  • 中断和异常
  • Ray_Tracing_In_One_Weekend下
  • Git版本控制工具--关于命令
  • 武汉自闭症儿童寄宿学校:让孩子快乐成长
  • 易贝恩副总经理朱洪泽受邀为第四届中国项目经理大会演讲嘉宾
  • VirtulBOX Ubuntu22安装dpdk23.11
  • Ericsson EPSFB 通话掉话现象优化案例
  • 探索 aMQTT:Python中的AI驱动MQTT库
  • MySQL 实验 2:数据库的创建与管理
  • C++模版进阶
  • 统计学习理论之VC维究竟是什么
  • Go语言实现长连接并发框架 - 任务执行流上下文
  • Valhalla实现 -Docker部署利用OSM(Mapbox)地图实现路径规划可视化
  • 重生到现代之从零开始的C语言生活》—— 内存的存储
  • 深入理解 Solidity 中的支付与转账:安全高效的资金管理攻略
  • 吉他弹唱打谱软件哪个好用 吉他弹唱制谱教程