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

SpringCloudGateway 自定义局部过滤器

场景:

将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务

 

AllToOneGatewayFilterFactory
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;@Component
@Slf4j
public class AllToOneGatewayFilterFactory extends AbstractGatewayFilterFactory<AllToOneGatewayFilterFactory.Config> {public AllToOneGatewayFilterFactory() {super(Config.class);}@Overridepublic GatewayFilter apply(Config config) {return (exchange, chain) -> {ServerHttpRequest request = exchange.getRequest();request.getURI();// 替换路径String path = request.getPath().toString();ServerHttpRequest modifiedRequest = request.mutate().header(config.headerName, path).path(config.getToPath()).build();exchange = exchange.mutate().request(modifiedRequest).build();log.info("AllToOne: headers{{}:{}}, {} ---> {}", config.getHeaderName(),path, request.getURI(), modifiedRequest.getURI());return chain.filter(exchange);};}@Setter@Getterpublic static class Config {private String headerName;private String toPath;}
}

 

 spring:cloud:gateway:httpclient:ssl:useInsecureTrustManager: trueroutes:- id: AllToOne_fnpturi: http://localhost:19982predicates:- Path=/**filters:- name: AllToOneargs:headerName: api-pathtoPath: /api/unified

注意:1.类名必须以GatewayFilterFactory结尾否则会出现不识别 的情况

           2.配置的filters -name 的值为类的前缀(截取GatewayFilterFactory之后的)

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

相关文章:

  • Android屏幕刷新率与FPS(Frames Per Second) 120hz
  • 博科Brocade FC交换机常用操作命令
  • 具身智能之人形机器人核心零部件介绍
  • 本地部署drawDB结合内网穿透技术实现数据库远程管控方案
  • 判断是否是润年
  • 从0开始学习R语言--Day20--Wilcoxon秩和检验
  • 企业如何一键复制 DolphinScheduler 项目到新项目服务器?全套自动化方案来了!(企业不外传的实用工具)
  • Python网页自动化Selenium中文文档
  • 走进离线语音:安信可 VC‑01 智能模块全面拆解与 MCU 实战
  • 爬虫基础学习day2
  • Electron简介(附电子书学习资料)
  • day030-Shell自动化编程-函数
  • Electron 防脱壳转二进制 JSC 打包过程以及踩坑记录
  • 【向量库】Weaviate 搜索与索引技术:从基础概念到性能优化
  • 二维数组 行列混淆区分 js
  • 第十四届“中国软件杯”大学生软件设计大赛启幕,A9赛题解析会6月12日开课
  • MODBUS TCP转CANopen 技术赋能高效协同作业
  • NoSQL 之 Redis 集群
  • Java基于BS架构的OA流程可视化实战:从工作流引擎到前端交互(附完整源代码+论文框架)
  • 【Rust TCP编程】Rust网络编程之TCP编程语法解析与应用实战
  • Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
  • 如何让非 TCP/IP 协议驱动屏蔽 IPv4/IPv6 和 ARP 报文?
  • gephi绘制网络拓扑图:批量给节点着色
  • spring boot使用HttpServletResponse实现sse后端流式输出消息
  • 代理篇12|深入理解 Vite中的Proxy接口代理配置
  • validate校验的使用
  • 50、文件上传-单文件与多文件上传的使用
  • 使用大模型预测巨细胞病毒视网膜炎的技术方案
  • JavaScript 标签加载
  • QT 第三讲 --- 基础篇 初用信号槽与命名规范