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

Spring Cloud Gateway过滤器GlobalFilter详解

一、过滤器的场景

在springCloud架构中,网关是必不可少的组件,它用于服务路由的转发。对客户端进行屏蔽微服务的具体细节,客户端只需要和网关进行交互。所以网关顾名思义,就是网络的一个关卡。它就是一座城的城门守卫。所以这个守卫就可以做很多工作,比如对来访者身份的认证,盘查等。最后才是放行。所以在微服务开发中,我们可以在这一层做过滤器,这是非常好的场景。

 

二、 GatewayFilter与GlobalFilter

Spring Cloud Gateway 根据作用范围划分为 GatewayFilter 和 GlobalFilter,二者区别如下:

  1. GatewayFilter : 需要通过spring.cloud.routes.filters 配置在具体路由下,只作用在当前路由上或通过spring.cloud.default-filters配置在全局,作用在所有路由上。
  2. GlobalFilter : 不需要在配置文件中配置,作用在所有的路由上,最终通过GatewayFilterAdapter包装成GatewayFilterChain可识别的过滤器,它为请求业务以及路由的URI转换为真实业务服务的请求地址的核心过滤器,不需要配置,系统初始化时加载,并作用在每个路由上。

GlobalFilter应用

@Component
public class TestGlobalFilter implements GlobalFilter, Ordered {@Overridepublic int getOrder() {return 0;}@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {ServerHttpRequest request = exchange.getRequest();ServerHttpResponse response = exchange.getResponse();//获取urlString path = request.getURI().getPath();//获取请求头中信息String source =  request.getHeaders().getFirst("source");//做一些动作和业务return chain.filter(exchange);}}

相关文章:

Spring Cloud Gateway过滤器GlobalFilter详解

一、过滤器的场景 在springCloud架构中&#xff0c;网关是必不可少的组件&#xff0c;它用于服务路由的转发。对客户端进行屏蔽微服务的具体细节&#xff0c;客户端只需要和网关进行交互。所以网关顾名思义&#xff0c;就是网络的一个关卡。它就是一座城的城门守卫。所以这个守…...

【LeetCode】1281.整数的各位积和之差

题目 给你一个整数 n&#xff0c;请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。 示例 1&#xff1a; 输入&#xff1a;n 234 输出&#xff1a;15 解释&#xff1a; 各位数之积 2 * 3 * 4 24 各位数之和 2 3 4 9 结果 24 - 9 15示例 2&…...

22、springboot的Profile(通过yml配置文件配置 profile,快速切换项目的开发环境)

springboot的Profile ★ 何谓Profile 应用所在的运行环境发生切换时&#xff0c;配置文件常常就需要随之修改。Profile&#xff1a;——就是一组配置文件及组件的集合。可以整个应用在不同的profile之间切换&#xff08;设置活动profile&#xff09;&#xff0c;整个应用都将使…...

2023-08-12力扣每日一题-暴力hard

链接&#xff1a; 23. 合并 K 个升序链表 题意&#xff1a; 如题 解&#xff1a; 时间668ms击败 5.00%使用 C 的用户/内存12.37mb击败 87.96%使用 C 的用户 循环选择插入新链表的节点&#xff0c;纯正的暴力&#xff0c;不过空间用得少 最坏应该是1E4*1E4&#xff0c;没…...

Mac安装nvm教程及使用

nvm 是 node 版本管理器&#xff0c;也就是说一个 nvm 可以管理多个 node 版本&#xff08;包含 npm 与 npx&#xff09;&#xff0c;可以方便快捷的安装、切换 不同版本的 node。 1、直接通过brew安装 执行命令&#xff1a;brew install nvm PS&#xff1a; 如果没有安装br…...

左值引用和右值引用

目录 辨析引用和指针 代码段 定义引用变量的技巧 同一内存 指针和引用的简单运用 辨析两类指针 数组、指针、引用 辨析左值引用和右值引用 代码段 左值引用和右值引用 辨析引用和指针 1、引用是一种更安全的指针 说明&#xff1a;引用必须初始化&#xff0c;而指针可…...

JavaWeb 中对 HTTP 协议的学习

HTTP1 Web概述1.1 Web和JavaWeb的概念1.2 JavaWeb技术栈1.2.1 B/S架构1.2.2 静态资源1.2.3 动态资源1.2.4 数据库1.2.5 HTTP协议1.2.6 Web服务器 1.3 Web核心 2 HTTP2.1 简介2.2 请求数据格式2.2.1 格式介绍2.2.2 实例演示 2.3 响应数据格式2.3.1 格式介绍2.3.2 响应状态码2.3.…...

06-hadoop集群搭建(root用户)

搭建Hadoop集群流程 环境准备 1、基础环境的搭建&#xff08;内网封火墙关闭、主机名、规划好静态ip、hosts映射、时间同步ntp、jdk、ssh免密等&#xff09; 2、Hadoop源码编译&#xff08;为了适应不同操作系统间适配本地库、本地环境等&#xff09; 3、Hadoop配置文件的修…...

MySQL 窗口函数是什么,有这么好用

先看这段像天书一样的 SQL ,看着就头疼。 SELECTs1.name,s1.subject,s1.score,sub.avg_score AS average_score_per_subject,(SELECT COUNT(DISTINCT s2.score) 1 FROM scores s2 WHERE s2.score > s1.score) AS score_rank FROM scores s1 JOIN (SELECT subject, AVG(sco…...

用户数据报协议UDP

UDP的格式 载荷存放的是:应用层完整的UDP数据报 报头结构: 源端口号:发出的信息的来源端口目的端口号:信息要到达的目的端口UDP长度:2个字节(16位),即UDP总长度为:2^16bit 2^10bit * 2^6bit 1KB * 64 64KB.所以一个UDP的最大长度为64KBUDP校验和:网络的传输并非稳定传输,…...

STM32F429IGT6使用CubeMX配置外部中断按键

1、硬件电路 2、设置RCC&#xff0c;选择高速外部时钟HSE,时钟设置为180MHz 3、配置GPIO引脚 4、NVIC配置 PC13相同 5、生成工程配置 6、部分代码 中断回调函数 /* USER CODE BEGIN 0 */void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {if(GPIO_Pin GPIO_PIN_0){HAL_GPIO…...

时序预测 | Python实现LSTM长短期记忆网络时间序列预测(电力负荷预测)

时序预测 | Python实现LSTM长短期记忆网络时间序列预测(电力负荷预测) 目录 时序预测 | Python实现LSTM长短期记忆网络时间序列预测(电力负荷预测)效果一览基本描述模型结构程序设计参考资料效果一览...

[开发|前端] 路由守卫笔记

描述 vue-router提供的导航跳转或取消的api。 router.beforeEach 切换路由前调用 router.beforeResolve 组件内路由守卫解析之后调用&#xff0c;和beforeEach用法类似 router.afterEach 切换后调用 全局路由守卫有上面3个&#xff0c;调用时机不同 路由守卫都有3个参数 …...

网络基础——网络的由来与发展史

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 一、网络的由来 二、计算机网络的发展史 1、第一阶段 2、第二阶段 3、第三阶段 前言 每天都是使用网络&#xff0c;那么你知道网络…...

八数码(bfs)

思路&#xff1a; &#xff08;1&#xff09;用string来存储状态&#xff0c;用d<string,int>来记录状态变换次数&#xff1b; &#xff08;2&#xff09;在bfs过程中&#xff0c;先初始化&#xff08;q,d)&#xff1b;每次拿出队头状态&#xff0c;得到x的相对位置&am…...

CCLINK IE FIELD BASIC转MODBUS-TCP网关cclink与以太网的区别

协议的不同&#xff0c;数据读取困难&#xff0c;这是很多生产管理系统的难题。但是现在&#xff0c;捷米JM-CCLKIE-TCP通讯网关&#xff0c;让这个问题变得非常简单。这款通讯网关可以将各种MODBUS-TCP设备接入到CCLINK IE FIELD BASIC网络中&#xff0c;连接到MODBUS-TCP总线…...

【Rust】Rust学习 第十一章编写自动化测试

Rust 是一个相当注重正确性的编程语言&#xff0c;不过正确性是一个难以证明的复杂主题。Rust 的类型系统在此问题上下了很大的功夫&#xff0c;不过它不可能捕获所有种类的错误。为此&#xff0c;Rust 也在语言本身包含了编写软件测试的支持。 编写一个叫做 add_two 的将传递…...

关于使用pycharm遇到只能使用unittest方式运行,无法直接选择Run

相信大家可能都遇到过这个问题&#xff0c;使用pycharm直接运行脚本的时候&#xff0c;只能选择unittest的方式&#xff0c;能愁死个人 经过几次各种尝试无果之后&#xff0c;博主就放弃死磕了&#xff0c;原谅博主是个菜鸟 后来遇到这样的问题&#xff0c;往往也就直接使用cm…...

Docker+rancher部署SkyWalking8.5并应用在springboot服务中

1.Skywalking介绍 Skywalking是一个国产的开源框架&#xff0c;2015年有吴晟个人开源&#xff0c;2017年加入Apache孵化器&#xff0c;国人开源的产品&#xff0c;主要开发人员来自于华为&#xff0c;2019年4月17日Apache董事会批准SkyWalking成为顶级项目&#xff0c;支持Jav…...

代码随想录第45天 | 322. 零钱兑换、279. 完全平方数

322. 零钱兑换 动规五部曲分析如下&#xff1a; 确定dp数组以及下标的含义 dp[j]&#xff1a;凑足总额为j所需钱币的最少个数为dp[j] 确定递推公式 凑足总额为j - coins[i]的最少个数为dp[j - coins[i]]&#xff0c;那么只需要加上一个钱币coins[i]即dp[j - coins[i]] 1就是…...

Visual Studio Live Share完整教程:从安装配置到高级协作技巧

Visual Studio Live Share完整教程&#xff1a;从安装配置到高级协作技巧 【免费下载链接】live-share Real-time collaborative development from the comfort of your favorite tools 项目地址: https://gitcode.com/gh_mirrors/liv/live-share Visual Studio Live Sh…...

ABAP2XLSX企业级Excel生成技术选型指南:5大优势与架构深度解析

ABAP2XLSX企业级Excel生成技术选型指南&#xff1a;5大优势与架构深度解析 【免费下载链接】abap2xlsx Generate your professional Excel spreadsheet from ABAP 项目地址: https://gitcode.com/gh_mirrors/ab/abap2xlsx 一、技术价值定位&#xff1a;为什么选择ABAP2X…...

想用Anti-UAV数据集练手无人机跟踪?这份保姆级下载、标注与使用指南请收好

Anti-UAV数据集实战&#xff1a;从零开始掌握无人机多模态跟踪技术 无人机跟踪技术正在成为计算机视觉领域的热点研究方向。对于刚接触这个领域的研究者和开发者来说&#xff0c;Anti-UAV数据集提供了一个绝佳的实践平台。这个多模态数据集不仅包含常规的RGB视频&#xff0c;还…...

Go-CQHTTP终极指南:一站式构建智能QQ机器人助手

Go-CQHTTP终极指南&#xff1a;一站式构建智能QQ机器人助手 【免费下载链接】go-cqhttp cqhttp的golang实现&#xff0c;轻量、原生跨平台. 项目地址: https://gitcode.com/gh_mirrors/go/go-cqhttp 在当今数字化时代&#xff0c;智能聊天机器人已成为社群管理、自动化客…...

实测对比:鲁班猫5跑YOLOv12,比树莓派5快多少?附性能优化小技巧

鲁班猫5 vs 树莓派5&#xff1a;YOLOv12推理性能实测与NPU优化实战 当我们需要在嵌入式设备上部署目标检测模型时&#xff0c;硬件选型往往让人纠结。最近拿到鲁班猫5&#xff08;Rockchip RK3588&#xff09;和树莓派5两款热门开发板&#xff0c;我决定做个深度对比测试&#…...

Compojure测试驱动开发:如何为路由编写单元测试的终极指南

Compojure测试驱动开发&#xff1a;如何为路由编写单元测试的终极指南 【免费下载链接】compojure A concise routing library for Ring/Clojure 项目地址: https://gitcode.com/gh_mirrors/co/compojure Compojure作为Clojure生态中简洁高效的路由库&#xff0c;其测试…...

Element UI el-upload 多文件上传 on-success 回调触发机制深度解析与实战优化

1. 多文件上传的常见痛点与 el-upload 行为解析 在实际开发中&#xff0c;文件上传功能几乎是每个Web应用都绕不开的需求。Element UI的el-upload组件因其开箱即用的特性&#xff0c;成为很多Vue开发者的首选。但当你需要处理多文件上传时&#xff0c;可能会遇到一个让人困惑的…...

如何高效转换B站m4s缓存:专业开发者的实战指南

如何高效转换B站m4s缓存&#xff1a;专业开发者的实战指南 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 在数字内容时代&#xff0c;B站视频的…...

用YOLOv8给番茄‘看病’:手把手教你训练一个田间病害检测模型(附4万张数据集)

番茄病害智能诊断实战&#xff1a;基于YOLOv8的田间检测模型训练指南 清晨的阳光洒在番茄大棚里&#xff0c;叶片上那些不起眼的褐色斑点可能正预示着一次严重的病害爆发。传统农业依赖人工巡检&#xff0c;不仅效率低下&#xff0c;还容易错过最佳防治时机。如今&#xff0c;计…...

从仿真到实战:如何用MATLAB生成的白光干涉信号验证你的测量算法?

从仿真到实战&#xff1a;MATLAB白光干涉信号生成与算法验证全流程指南 在光学测量领域&#xff0c;白光干涉技术因其独特的优势成为表面形貌检测、薄膜厚度测量等精密工程应用的核心手段。然而&#xff0c;实际系统开发中最令人头疼的环节往往不是硬件搭建&#xff0c;而是测量…...