当前位置:网站首页>自定义指定路由上的Gateway过滤器工厂
自定义指定路由上的Gateway过滤器工厂
2022-07-06 06:08:00 【雪峰.贵】
前言:核心API

一、需求:拦截请求,打印日志
1.加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
2.创建自定义过滤器 工厂
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.factory.AbstractNameValueGatewayFilterFactory;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
@Slf4j
@Component
//自定义过滤器工厂的名字要以GatewayFilterFactory结尾,只需在前面加个前缀,并把前缀配到配置文件里
public class PreLogGatewayFilterFactory extends AbstractNameValueGatewayFilterFactory {
@Override
public GatewayFilter apply(NameValueConfig config) {
return ((exchange, chain) -> { //配置上写的参数用config.getName(),config.getValue()来拿 //config.getName()拿到的是a,config.getValue()拿到的是b log.info("请求进来了,参数:{},{}",config.getName(),config.getValue());
//Request.mutate后可以修改请求,需改后build()
ServerHttpRequest modifiedRequest = exchange.getRequest().mutate().build();
//把修改后的Request给Exchange
ServerWebExchange modifiedExchange = exchange.mutate().request(modifiedRequest).build();
//继续下一个过滤器
return chain.filter(modifiedExchange);
});
}
}
3.加配置
spring:
application:
name: gateway
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
discovery:
locator:
enabled: true #让gateway在nacos上找微服务
routes:
- id: before_route
uri: lb://user-center #lb :nacos上的微服务
predicates:
- MyTimeBetween=上午9:00,下午11:00 #指定一个路由规则,这里的MyTimeBetween是自定义的,可以使用spring-cloud-gateway自带的。
filters:
- PreLog=a,b #写前缀即可,后面是传给工厂的参数
4.验证
通过gateway访问微服务,前提是请求路径需要满足routes的谓词,才会走到这个工厂里。
http://localhost:8040/users/1
边栏推荐
- 异常检测方法总结
- MySQL之数据类型
- isam2运行流程
- 黑猫带你学eMMC协议第10篇:eMMC读写操作详解(read & write)
- 单元测试的意义
- (中)苹果有开源,但又怎样呢?
- 【LeetCode】Day96-第一个唯一字符&赎金信&字母异位词
- 【API接口工具】postman-界面使用介绍
- Buuctf-[bjdctf2020]zjctf, but so (xiaoyute detailed explanation)
- Investment strategy discussion and market scale prediction report of China's solid state high power amplifier industry from 2022 to 2028
猜你喜欢

如何在业务代码中使用 ThinkPHP5.1 封装的容器内反射方法

10M25DCF484C8G(FPGA) AMY-6M-0002 BGA GPS模块

全链路压测:构建三大模型

The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower

selenium源码通读·9 |DesiredCapabilities类分析

About PHP startup, mongodb cannot find the specified module

Baidu online AI competition - image processing challenge: the 8th program of handwriting erasure

二维码的前世今生 与 六大测试点梳理
![Buuctf-[bjdctf2020]zjctf, but so (xiaoyute detailed explanation)](/img/c9/56fba6054c91f090de31463a8b4705.jpg)
Buuctf-[bjdctf2020]zjctf, but so (xiaoyute detailed explanation)

Configuring OSPF GR features for Huawei devices
随机推荐
[web security] nodejs prototype chain pollution analysis
全链路压测:构建三大模型
Grant Yu, build a web page you want from 0
A complete collection of necessary learning websites for office programmers
Application of Lie group in gtsam
一文揭开,测试外包公司的真 相
[paper reading] nflowjs: synthetic negative data intensive anomaly detection based on robust learning
How to use the container reflection method encapsulated by thinkphp5.1 in business code
Novice entry SCM must understand those things
【Postman】Collections-运行配置之导入数据文件
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
Application du Groupe Li dans gtsam
LeetCode 729. 我的日程安排表 I
MySQL之基础知识
As3013 fire endurance test of cable distribution system
Caused by:org.gradle.api.internal.plugins . PluginApplicationException: Failed to apply plugin
Dynamic programming -- knapsack problem
How Huawei routers configure static routes
Coordinatorlayout+nestedscrollview+recyclerview pull up the bottom display is incomplete