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

9-SpringCloud-服务网关 Gateway-高级特性之 Filter-2

6.第三组之 AddResponseHeader GatewayFilter Factory

该服务网关过滤工厂用于新增响应头内容。AddResponseHeader 主要携带了三个参数,分别是 name、value 和 override(override的默认值未 true)。若 override 的值为 true 时,新增响应头内容匹配所有请求;若 override 的值为 false 时,且已经存在该响应头,则不会新增响应头匹配所有请求。具体的信息如下所示。

在这里插入图片描述

具体的操作如下所示。

  1. 修改服务网关 9527 的 application.yml 文件,在 filters 参数下添加 AddResponseHeader 参数,用于新增响应头内容。具体的配置文件信息如下所示。

            - id: pay_routh3 #pay_routh3uri: lb://cloud-payment-service                #匹配后提供服务的路由地址predicates:- Path=/pay/gateway/filter/**              # 断言,路径相匹配的进行路由filters:- AddRequestHeader=X-Request-atguigu1,atguiguValue1  # 请求头kv,若一头含有多参则重写一行设置- AddRequestHeader=X-Request-atguigu2,atguiguValue2- RemoveRequestHeader=sec-fetch-site      # 删除请求头sec-fetch-site- SetRequestHeader=sec-fetch-mode, Blue-updatebyzzyy # 将请求头sec-fetch-mode对应的值修改为Blue-updatebyzzyy- AddRequestParameter=customerId,9527001 # 新增请求参数Parameter:k ,v- RemoveRequestParameter=customerName   # 删除url请求参数customerName,你传递过来也是null- AddResponseHeader=X-Response-leolei, BlueResponse # 新增请求参数X-Response-atguigu并设值为BlueResponse
    
  2. 测试,本节暂时不测试,待新增参数 RemoveResponseHeader 和 SetResponseHeader 后一起测试。

7.第三组之 RemoveResponseHeader GatewayFilter Factory

该服务网关过滤工厂用于删除响应头内容。RemoveResponseHeader 携带了一个参数 name,通过响应头内容的 name 删除 响应头内容,具体的信息如下所示。

在这里插入图片描述

具体操作如下所示。

  1. 修改服务网关 9527 的 application.yml 文件,在 filters 参数下添加 RemoveResponseHeader 参数,用于删除响应头内容。具体的配置文件信息如下所示。

            - id: pay_routh3 #pay_routh3uri: lb://cloud-payment-service                #匹配后提供服务的路由地址predicates:- Path=/pay/gateway/filter/**              # 断言,路径相匹配的进行路由filters:- AddRequestHeader=X-Request-atguigu1,atguiguValue1  # 请求头kv,若一头含有多参则重写一行设置- AddRequestHeader=X-Request-atguigu2,atguiguValue2- RemoveRequestHeader=sec-fetch-site      # 删除请求头sec-fetch-site- SetRequestHeader=sec-fetch-mode, Blue-updatebyzzyy # 将请求头sec-fetch-mode对应的值修改为Blue-updatebyzzyy- AddRequestParameter=customerId,9527001 # 新增请求参数Parameter:k ,v- RemoveRequestParameter=customerName   # 删除url请求参数customerName,你传递过来也是null- AddResponseHeader=X-Response-leolei, BlueResponse # 新增请求参数X-Response-atguigu并设值为BlueResponse- RemoveResponseHeader=Content-Type # 将默认自带Content-Type回应属性删除
    
  2. 测试,本节暂时不测试,待新增参数 AddResponseHeader 和 SetResponseHeader 后一起测试。

8.第三组之 SetResponseHeader GatewayFilter Factory

该服务网关过滤工厂用于修改响应头内容。SetResponseHeader 携带了两个参数,分别是 name 和 value,该响应头参数通过给定的 name 修改已有响应头参数的值,具体的信息如下所示。

在这里插入图片描述

具体操作如下所示。

  1. 修改服务网关 9527 的 application.yml 文件,在 filters 参数下添加 RemoveResponseHeader 参数,用于删除响应头内容。具体的配置文件信息如下所示。

            - id: pay_routh3 #pay_routh3uri: lb://cloud-payment-service                #匹配后提供服务的路由地址predicates:- Path=/pay/gateway/filter/**              # 断言,路径相匹配的进行路由filters:- AddRequestHeader=X-Request-atguigu1,atguiguValue1  # 请求头kv,若一头含有多参则重写一行设置- AddRequestHeader=X-Request-atguigu2,atguiguValue2- RemoveRequestHeader=sec-fetch-site      # 删除请求头sec-fetch-site- SetRequestHeader=sec-fetch-mode, Blue-updatebyzzyy # 将请求头sec-fetch-mode对应的值修改为Blue-updatebyzzyy- AddRequestParameter=customerId,9527001 # 新增请求参数Parameter:k ,v- RemoveRequestParameter=customerName   # 删除url请求参数customerName,你传递过来也是null- AddResponseHeader=X-Response-leolei, BlueResponse # 新增请求参数X-Response-atguigu并设值为BlueResponse- RemoveResponseHeader=Content-Type # 将默认自带Content-Type回应属性删除- SetResponsseHeader=Date,2025-10-31 # 设置回应头Date值为2025-10-31
    
  2. 测试,本节将联合新增参数 AddResponseHeader 和 SetResponseHeader 一起测试。启动支付微服务 8001、负载均衡80、服务网关 9527 和服务链路追踪 Zipkin,若未关闭之前的服务,可以只重启服务网关 9527即可。然后在浏览器中测试网址http://localhost:9527/pay/gateway/filter。注意,先启动服务链路追踪 Zipkin。

    未添加过滤工厂 AddResponseHeader、SetResponseHeader 和 RemoveResponseHeader 后访问网址http://localhost:9527/pay/gateway/filter,浏览器输出的请求参数如下图所示。

    在这里插入图片描述

    添加过滤工厂 AddResponseHeader、SetResponseHeader 和 RemoveResponseHeader 后访问网址http://localhost:9527/pay/gateway/filter,浏览器输出的请求参数如下图所示。

    在这里插入图片描述

9.第四组之 PrefixPath GatewayFilter Factory

该服务网关过滤工厂用于自动添加路径前缀。PrefixPath 携带了一个参数 prefix,主要用于指定访问网址的前缀,每次访问网址可不用添加前缀,服务网关会自动添加路径前缀,具体的信息如下所示。

在这里插入图片描述

具体操作如下所示。

  1. 修改服务网关 9527 的 application.yml 文件,在 filters 下添加参数 PrefixPath 指定访问网址的路径前缀,具体的配置文件信息如下所示。

            - id: pay_routh3 #pay_routh3uri: lb://cloud-payment-service                #匹配后提供服务的路由地址predicates:
    #            - Path=/pay/gateway/filter/**              # 断言,路径相匹配的进行路由- Path=/gateway/filter/**              # 断言,路径相匹配的进行路由filters:- AddRequestHeader=X-Request-atguigu1,atguiguValue1  # 请求头kv,若一头含有多参则重写一行设置
    #            - AddRequestHeader=X-Request-atguigu2,atguiguValue2
    #            - RemoveRequestHeader=sec-fetch-site
    #            - SetRequestHeader=sec-fetch-mode,Bulue-updatebyleolei
    #            - AddRequestParameter=customerId,6666
    #            - RemoveRequestParameter=customerName
    #            - AddResponseHeader=X-Response-leolei,BlueResponse
    #            - RemoveResponseHeader=Content-Type
    #            - SetResponseHeader=Date,2025-10-31- PrefixPath=/pay
    
  2. 测试,启动支付微服务 8001、负载均衡80、服务网关 9527 和服务链路追踪 Zipkin,若未关闭之前的服务,可以只重启服务网关 9527即可。然后在浏览器中测试网址http://localhost:9527/gateway/filter。注意,先启动服务链路追踪 Zipkin。

    这里访问的网址是http://localhost:9527/gateway/filter,但实际访问的是http://localhost:9527/pay/gateway/filter。这里之所以没有 /pay,是因为该路径前缀被服务网关过滤器统一管理了。访问网址后,打开浏览器开发者模式查看具体访问的网址,如下图所示。

    在这里插入图片描述

10.第四组之 SetPath GatewayFilter Factory

该服务网关过滤工厂用于修改访问路径。SetPath 携带了一个路径参数 template,该过滤工厂的参数需要配合断言的 Path 参数进行设置,断言的 Path 中使用占位符 {segment}替换为 SetPath 的路径对网址进行访问。具体的信息如下所示。

在这里插入图片描述

具体操作如下所示。

  1. 修改服务网关 9527 的 application.yml 配置文件,在 filters 下添加参数 SetPath 修改访问路径,需要配合占位符和断言的 Path 参数进行修改。具体的配置文件信息如下所示。

            - id: pay_routh3 #pay_routh3uri: lb://cloud-payment-service                #匹配后提供服务的路由地址predicates:
    #            - Path=/pay/gateway/filter/**              # 断言,路径相匹配的进行路由
    #            - Path=/gateway/filter/**              # 断言,路径相匹配的进行路由- Path=/XYZ/abc/{segment} # 断言,为配合SetPath测试,{segment}的内容最后被SetPath取代filters:- AddRequestHeader=X-Request-atguigu1,atguiguValue1  # 请求头kv,若一头含有多参则重写一行设置
    #            - AddRequestHeader=X-Request-atguigu2,atguiguValue2
    #            - RemoveRequestHeader=sec-fetch-site
    #            - SetRequestHeader=sec-fetch-mode,Bulue-updatebyleolei
    #            - AddRequestParameter=customerId,6666
    #            - RemoveRequestParameter=customerName
    #            - AddResponseHeader=X-Response-leolei,BlueResponse
    #            - RemoveResponseHeader=Content-Type
    #            - SetResponseHeader=Date,2025-10-31
    #            - PrefixPath=/pay- SetPath=/pay/gateway/{segment} # {segment}表示占位符,你写abc也行但要上下一致
    
  2. 测试,启动支付微服务 8001、负载均衡80、服务网关 9527 和服务链路追踪 Zipkin,若未关闭之前的服务,可以只重启服务网关 9527即可。然后在浏览器中测试网址http://localhost:9527/XYZ/abc/filter。注意,先启动服务链路追踪 Zipkin。

    这里访问的网址是http://localhost:9527/XYZ/abc/filter,但实际访问的是http://localhost:9527/pay/gateway/filter。这里将具体网址交给服务网关的过滤器管理了,只需打开修改的网址访问即可。打开浏览器开发者模式查看具体访问的网址,如下图所示。

    在这里插入图片描述

11.第四组之 RedirectTo GatewayFilter Factory

该服务网关过滤工厂用于重定向到某个页面。RedirectTo 携带了三个参数,分别是 status、url 和 includeRequestParams,当访问指定网址时就重定向到指定的 url 网址去,具体的信息如下所示。

在这里插入图片描述

具体操作如下所示。

  1. 修改服务网关 9527 的 application.yml 配置文件,在 filters 下添加参数 RedirectTo,当访问网址的状态码为 300 系列重定向到某个页面,具体的配置信息如下所示。

            - id: pay_routh3 #pay_routh3uri: lb://cloud-payment-service                #匹配后提供服务的路由地址predicates:- Path=/pay/gateway/filter/**              # 断言,路径相匹配的进行路由
    #            - Path=/gateway/filter/**              # 断言,路径相匹配的进行路由
    #            - Path=/XYZ/abc/{segment} # 断言,为配合SetPath测试,{segment}的内容最后被SetPath取代filters:- AddRequestHeader=X-Request-atguigu1,atguiguValue1  # 请求头kv,若一头含有多参则重写一行设置
    #            - AddRequestHeader=X-Request-atguigu2,atguiguValue2
    #            - RemoveRequestHeader=sec-fetch-site
    #            - SetRequestHeader=sec-fetch-mode,Bulue-updatebyleolei
    #            - AddRequestParameter=customerId,6666
    #            - RemoveRequestParameter=customerName
    #            - AddResponseHeader=X-Response-leolei,BlueResponse
    #            - RemoveResponseHeader=Content-Type
    #            - SetResponseHeader=Date,2025-10-31
    #            - PrefixPath=/pay
    #            - SetPath=/pay/gateway/{segment} # {segment}表示占位符,你写abc也行但要上下一致- RedirectTo=302,http://www.atguigu.com/ # 访问http://localhost:9527/pay/gateway/filter跳转到http://www.atguigu.com/
    
  2. 测试,启动支付微服务 8001、负载均衡80、服务网关 9527 和服务链路追踪 Zipkin,若未关闭之前的服务,可以只重启服务网关 9527即可。然后在浏览器中测试网址http://localhost:9527/pay/gateway/filter。注意,先启动服务链路追踪 Zipkin。

    这里访问的网址http://localhost:9527/pay/gateway/filter,然后重定向到 http://www.atguigu.com/。打开浏览器开发者模式查看如下图所示。

    在这里插入图片描述

12.第五组之 Default Filters

该默认过滤器 Default Filters 配置在此处相当于全局通用,自定义秒变 Global。具体的配置方法如下所示。

在这里插入图片描述

至此,服务网关 Gateway 高级特性 Filter 的单一内置过滤器就配置到此。

上一篇 9-SpringCloud-服务网关 Gateway-高级特性之 Filter-1

http://www.dtcms.com/a/553059.html

相关文章:

  • Electron中使用exceljs+Node模块编写
  • 优秀服装网站设计业务接单网站
  • 构造/析构/赋值运算理解
  • 给予虚拟成像台尝鲜版九,支持 HTML 原型模式
  • 区块链技术在生产数据管理中的应用:Hyperledger Fabric与蚂蚁链智能合约设计
  • 可以用手机建设网站吗wordpress程序
  • deepin Ubuntu/Debian系统 环境下安装nginx,php,mysql,手动安装,配置自己的项目
  • SDC命令详解:使用set_dont_touch_network命令进行约束
  • CI/CD(三)—— 【保姆级实操】Jenkins+Docker GitLab+Tomcat 实现微服务CI/CD全流程部署
  • 20. Portals和Fragment
  • 企业网站管理wordpress必备插件
  • 数据结构之栈和队列-栈
  • 操作系统-线程
  • sward零基础学习,创建第一个知识库
  • 门户网站建设方式网站制作叫什么
  • step-ca 证书生成完整步骤指南
  • 从字节码生成看 Lua VM 前端与后端协同:编译器与执行器衔接逻辑
  • SQLite3语句以及FMDB数据存储初步学习
  • 抽奖网站怎么制作长沙人力资源招聘网
  • IntelliJ IDEA 远程断点调试完全指南
  • uniapp使用sqlite模块
  • Lua--数据文件和持久性
  • Spark SQL 解锁电商数据密码:窗口函数大显身手
  • 用R语言生成指定品种与对照的一元回归直线(含置信区间)
  • NVR(网络视频录像机)和视频网关的工作方式
  • 如何架设网站服务器网络搭建百度百科
  • opencv 学习: 04 通过ROI处理图片局部数据,以添加水印为例
  • 中小企业网站模板诚信网站平台建设方案
  • chatgpt崩溃了,gpt怎么了
  • [MySQL] 页与索引