两天学会微服务网关Gateway-Gateway过滤器
锋哥原创的微服务网关Gateway视频教程:
Gateway微服务网关视频教程(无废话版)_哔哩哔哩_bilibiliGateway微服务网关视频教程(无废话版)共计17条视频,包括:1_Gateway简介、2_Gateway工作原理、3_Gateway HelloWorld快速入门等,UP主更多精彩视频,请关注UP账号。
https://www.bilibili.com/video/BV1oX4y1u7ZJ/Gateway分为Pre类型的过滤器和Post类型的过滤器。
-
Pre类型的过滤器在请求转发到后端微服务之前执行,在Pre类型过滤器链中可以做鉴权、限流等操作。
-
Post类型的过滤器在请求执行完成之后、将结果返回给客户端之前执行。
在Spring Cloud Gateway中内置了很多Filter,Filter有两种实现,分别是GatewayFilter和GlobalFilter。GlobalFilter全局过滤器会应用到所有的路由上,而GatewayFilter只会应用到单个路由或者一个分组的路由上。
5.1 Gateway过滤器工厂介绍
过滤器 有 20 多个 实现 类, 包括 头部 过滤器、 路径 类 过滤器、 Hystrix 过滤器 和 变更 请求 URL 的 过滤器, 还有 参数 和 状态 码 等 其他 类型 的 过滤器。
内置的过滤器工厂有22个实现类,包括 头部过滤器、路径过滤器、Hystrix 过滤器 、请求URL 变更过滤器,还有参数和状态码等其他类型的过滤器。根据过滤器工厂的用途来划分,可以分为以下几种:Header、Parameter、Path、Body、Status、Session、Redirect、Retry、RateLimiter和Hystrix

5.2 AddRequestParameter GatewayFilter Factory
spring:application:name: gateway-servercloud:gateway:routes:- id: add_request_parameter_routeuri: http://localhost:8080/predicates:- Path=/product/**filters:- AddRequestParameter=info, hehe
添加请求参数(属于前置过滤网关)
5.3 RewritePath GatewayFilter Factory
spring:application:name: gateway-servercloud:gateway:routes:- id: add_request_parameter_routeuri: http://localhost:8080/predicates:- Path=/product/**, /api-gateway/**filters:- AddRequestParameter=info, hehe- RewritePath=/api-gateway(?<segment>/?.*), $\{segment}
将/api-gateway/product/请求重写成/product/请求(属于前置过滤网关)
5.4 SetStatus GatewayFilter Factory
spring:application:name: gateway-servercloud:gateway:routes:- id: add_request_parameter_routeuri: http://localhost:8080/predicates:- Path=/product/**, /api-gateway/**filters:- AddRequestParameter=info, hehe- RewritePath=/api-gateway(?<segment>/?.*), $\{segment}- SetStatus=456
无论哪种情况,响应的HTTP状态都设置为456(属于后置过滤网关)
5.5 AddResponseHeader GatewayFilter Factory
spring:application:name: gateway-servercloud:gateway:routes:- id: add_request_parameter_routeuri: http://localhost:8080/predicates:- Path=/product/**, /api-gateway/**filters:- AddRequestParameter=info, hehe- RewritePath=/api-gateway(?<segment>/?.*), $\{segment}- SetStatus=456- AddResponseHeader=X-Response-Author, java1234
返回信息,添加header头信息(属于后置过滤网关)

5.6 gateway全局过滤器 GlobalFilter
全局过滤器不需要在配置文件中配置,作用在所有的路由上。我们可以用它来实现很多统一化处理的业务需求,比如负载均衡,统一过滤,路径转发,监控,日志等等。
全局过滤器加上网关过滤器组成过滤器链,该过滤器链的执行顺序是根据@Order注解指定的数字大小,从小到大进行排序,数字越小,优先级越高。


5.7 自定义过滤器
Spring Cloud Gateway提供了过滤器的扩展功能,开发者可以根据实际业务需求来自定义GatewayFilter网关过滤器或者GlobalFilter全局过滤器。
5.7.1 自定义GatewayFilter
实现GatewayFilter,Ordered接口,以及配置类
package com.java1234.filter;import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.core.Ordered;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;/*** 自定义网关过滤器* @author java1234_小锋* @site www.java1234.com* @company Java知识分享网* @create 2021-04-08 16:25*/
public class MyCustomerGatewayFilter implements GatewayFilter,Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {System.out.println("自定义网关过滤器");return chain.filter(exchange);}@Overridepublic int getOrder() {return -1;}
}
5.7.2 自定义GlobalFilter
实现GlobalFilter ,Ordered 接口,加上@Component注解即可;
package com.java1234.filter;import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;/*** @author java1234_小锋* @site www.java1234.com* @company Java知识分享网* @create 2021-04-09 12:29*/
@Component
public class MyCustomerGlobalFilter implements GlobalFilter ,Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {System.out.println("自定义全局过滤器");return chain.filter(exchange);}@Overridepublic int getOrder() {return -2;}
}
相关文章:
两天学会微服务网关Gateway-Gateway过滤器
锋哥原创的微服务网关Gateway视频教程: Gateway微服务网关视频教程(无废话版)_哔哩哔哩_bilibiliGateway微服务网关视频教程(无废话版)共计17条视频,包括:1_Gateway简介、2_Gateway工作原理、3…...
图像处理 mask掩膜
1,图像算术运算 图像的算术运算有很多种,比如两幅图像可以相加,相减,相乘,相除,位运算,平方根,对数,绝对值等;图像也可以放大,缩小,旋…...
信驰达ESP32-C3/RTL8720CM WiFi开发板RF-WT01上线
为方便客户快速选型和验证WiFi模块,深圳市信驰达科技有限公司推出了WiFi开发板RF-WT01,支持适配信驰达RF-WM-ESP32B1、RF-WM-20CMB1、RF-WM-11AFB1、RF-WM-20DNB1 4款WiFi串口模块使用,方便客户实现对信驰达WiFi模块的快速测试和评估。 图1RF…...
【产品经理方法论——产品的基本概念】
1. 产品学三元素 产品学有三个元素:用户、需求、产品 产品学的内容:根据用户的需求设计产品,使用产品服务用户 仅仅通过三个元素无法说明每个元素的概念,因为三个元素互为说明关系。 通过引入人/群体来说明三个元素的关系。 需…...
推特API(Twitter API)V2 查询用户信息
前面章节已经介绍使用code换取Token的整个流程了,这里不再重复阐述了,下面我们介绍如何使用Token查询用户信息等操作。 1.引入相关依赖Maven <dependency> <groupId>oauth.signpost</groupId> <artifactId>signpost-co…...
在Elasticsearch IK分词器中更新、停用某些专有名词
在Elasticsearch IK分词器中更新、停用某些专有名词 目前IK分词器对于现有的新名词或者流行语没有做区分比如"白嫖" “奥利给”,或者对一些没有用的字比如 “的” "地"进行分词其实没有必要过多的分词只会占用宝贵的内存空间,所以如…...
时钟显示 html JavaScript
sf.html <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>时间</title><script>function showTime(){var timenew Date();var datetime.getDate();var yeartime.getFullYear();var monthtime.getMonth()1;var …...
List<Object>集合对象属性拷贝工具类
目录 问题现象: 问题分析: 解决方法: 问题现象: 最近在项目中经常会使用到BeanUtils工具类来作对象的属性字段拷贝,但如果应用到List集合的话就需要遍历去操作了,如下: 打印结果: …...
请说明Vue中的异步组件加载
Vue中的异步组件加载是指当页面需要渲染某个组件时,可以在需要时再去加载这个组件,而不是在页面初始化的时候就将所有组件一次性加载进来。这种方式能够有效降低页面的初始加载时间,提升用户体验。 在Vue中,我们可以使用import函…...
目标检测5:采用yolov8, RK3568上推理实时视频流
上一个效果图,海康球机对着电脑屏幕拍,清晰度不好。 RK3568接取RTSP视频流,通过解码,推理,编码,最终并把结果推出RTSP视频流。 数据集采用coco的80个种类集,通过从yovo8.pt,转换成R…...
微服务:Feign篇
1.什么是Feign Feign是一种声明式、模板化的HTTP客户端,可用于调用HTTP API实现微服务之间的远程服务调用。它的特点是使用少量的配置定义服务客户端接口,可以实现简单和可重用的RPC调用。 先来看我们以前利用RestTemplate发起远程调用的代码ÿ…...
基于chatgpt的聊天机器人
基于chatgpt的聊天机器人 以下是一个基于Python的示例代码,展示如何在本地环境中使用预训练的ChatGPT模型构建一个简单的聊天机器人应用程序。在这个示例中,我们将使用Hugging Face Transformers库加载GPT-2模型,并创建一个基于命令行的用户…...
BAT常见的20道Android面试题详解,我的头条面试经历分享
二、面试 下面主要列举下在面试过程中遇到过的剑指 offer 原题或者类似问题,大家应该清楚,面试过程中遇到原题不要太高兴,而刷剑指 offer 就能让遇到原题的可能性大大增加。 1.字节跳动春招 面试题 68 - II. 二叉树的最近公共祖先 2.京东…...
python66-Python的循环之常用工具函数
使用zip()函数可以把两个列表“压缩”成一个zip对象(可迭代对象),这样就可以使用一个循环并行遍历两个列表。为了测试 zip()函数的功能,我们可以先在交互式解释器中“试验”一下该函数的功能。 # !/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2024/01# @Author : …...
Cocos Creator 3.8.x 制作模糊效果(比如游戏弹窗需要的模糊效果)
接着上一个讨论的话题,关于3.8.x的后效,今天来分享自定义后效来制作模糊效果,并将他应用到弹窗中做背景,话不多说开整。 一:最终效果 首先咱们来看官网自定义后效怎么搞的,从它的实例开始:自定义后效 二:定义PostProcessSettings给节点提供资源(通过编辑器修改参数的…...
MATLAB报错:尝试将 SCRIPT imread 作为函数执行
报错: 在执行matlab脚本的时候出现报错。 >> imread 尝试将 SCRIPT imread 作为函数执行: S:\temp_file\matlab\DigitalImageProcessing\imread.m出错 imread (line 2) I imread(S:\temp_file\matlab\DigitalImageProcessing\blueman.png);分析以及解决方…...
能源管理师:薪资待遇、技能知识与职业发展路景全解析
能源管理师作为一种新兴职业,近年来受到了越来越多的关注。他们在能源领域发挥着重要的作用,帮助企业和组织优化能源使用、降低成本并实现可持续发展。本文将详细介绍能源管理师的薪资待遇、所需具备的技能知识以及职业发展路景。 一、薪资待遇 能源管…...
opencart3 添加速卖通商品脚本
非爬虫,只能把速卖通商品信息拿下来解析插入到自己的项目里。 刚接触opencart3没多久,有一些新项目需要添加商品,每次手动从速卖通复制信息又很慢,就自己写了一个脚本。 思路:速卖通商品详情页有一段数据包含了几乎所…...
【Linux】USB Functionfs编程:libusb接口详解
1、USB host_app代码注释 #include <libusb.h> libusb头文件,编译时链接库:libusb-1.0#define VENDOR 0x1d6b 厂商:Linux Foundation #define PRODUCT 0x0105 设备:FunctionFS Gadge...
网络编程,IO多路复用
1.使用IO多路复用完成TCP并发服务器 #include<myhead.h> #define SER_PORT 8888 //服务器端口号 #define SER_IP "192.168.124.10" //服务器IP地址int main(int argc, const char *argv[]) {//1、创建用于连接的套接字int sfd socket…...
新手必看:Sambert多情感语音合成镜像部署与使用全攻略
新手必看:Sambert多情感语音合成镜像部署与使用全攻略 1. 引言:为什么选择这个语音合成镜像 语音合成技术正在改变我们与数字世界的互动方式。想象一下,你的智能助手不仅能说话,还能根据场景切换不同的情感和音色——这正是Samb…...
PyTorch 2.8镜像实操手册:基于40G数据盘的视频生成训练环境搭建
PyTorch 2.8镜像实操手册:基于40G数据盘的视频生成训练环境搭建 1. 环境准备与快速部署 在开始视频生成训练之前,我们需要先准备好硬件环境和镜像部署。本镜像专为RTX 4090D显卡优化,配备了24GB显存和CUDA 12.4支持,能够高效处理…...
AI写前端也看“审美”?我用GLM4.6、Kimi和Minimax-m2做了个设计实验,结果有点意外
AI写前端也看“审美”?GLM4.6、Kimi与Minimax-m2的设计实验报告 当我们在深夜调试CSS时,是否想过AI模型其实也在"暗中观察"我们的设计品味?这次实验让我发现了一个有趣现象:不同AI生成的前端代码,在视觉呈现…...
VideoAgentTrek-ScreenFilter模型压缩与量化教程:在边缘设备上实现轻量部署
VideoAgentTrek-ScreenFilter模型压缩与量化教程:在边缘设备上实现轻量部署 想让一个原本需要强大GPU才能流畅运行的视频分析模型,在树莓派或者Jetson Nano这类小巧的边缘设备上也能跑起来吗?这听起来像是个不可能的任务,但通过模…...
土地利用变化分析实战:用Python处理40年CNLUCC数据集
土地利用变化分析实战:用Python处理40年CNLUCC数据集 1972年至今的中国土地利用变化数据,如同一部记录国土变迁的"生态相册"。对于区域规划师、生态研究者而言,这套CNLUCC数据集的价值不亚于考古学家手中的碳14检测仪。本文将带您用…...
深求·墨鉴(DeepSeek-OCR-2)惊艳效果:书法题跋+钤印位置+行气关系可视化还原
深求墨鉴(DeepSeek-OCR-2)惊艳效果:书法题跋钤印位置行气关系可视化还原 1. 引言:当OCR遇见水墨美学 你有没有遇到过这样的场景?面对一幅珍贵的书法作品或古籍文献,想要将其中的文字内容数字化࿰…...
实战指南:利用快马ai为django项目生成开箱即用的vscode python开发环境
作为一个长期使用Python开发Django项目的程序员,我深知配置开发环境是个既基础又容易踩坑的环节。最近尝试用InsCode(快马)平台生成配置方案,发现能省去大量重复劳动。下面分享我的实战经验: 项目结构规范化 平台生成的Django项目骨架严格遵循…...
【Polars 2.0企业级数据清洗黄金法则】:5大生产环境避坑指南+实测性能提升3.7倍基准报告
第一章:Polars 2.0企业级数据清洗黄金法则总览Polars 2.0 以零拷贝语义、并行执行引擎与原生 Arrow 内存布局为核心,重构了企业级数据清洗的性能边界与工程可靠性。其惰性 API 与 eager 模式无缝协同,使复杂清洗流水线既可交互调试࿰…...
AI命理工具实测:主流大模型八字紫微能力对比及避坑指南
1. AI命理新风向:当大模型碰撞传统术数 最近身边刮起了一阵“AI命理”的热潮:做开发的朋友电脑里存着排盘工具包,运营岗的同事午休时在研究紫微斗数星曜含义,就连开策划会的间隙,都有人拿着AI输出的六爻结果讨论项目走…...
火影AI绘画实战:用忍者绘卷Z-Image Turbo生成鸣人、佐助角色图教程
火影AI绘画实战:用忍者绘卷Z-Image Turbo生成鸣人、佐助角色图教程 1. 教程概述与准备工作 如果你是火影忍者的粉丝,现在可以通过AI技术轻松生成你最喜欢的角色图像。本教程将带你使用"忍者绘卷Z-Image Turbo"这个专门为火影风格优化的AI绘画…...
