当前位置:网站首页>自定义指定路由上的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
边栏推荐
- IP day 16 VLAN MPLS configuration
- Configuring OSPF GR features for Huawei devices
- 黑猫带你学eMMC协议第10篇:eMMC读写操作详解(read & write)
- As3013 fire endurance test of cable distribution system
- 数学三大核心领域概述:几何
- Sqlmap tutorial (III) practical skills II
- 使用Nacos管理配置
- Seven imperceptible truths in software testing
- Overview of three core areas of Mathematics: geometry
- Buuctf-[bjdctf2020]zjctf, but so (xiaoyute detailed explanation)
猜你喜欢
Manhattan distance sum - print diamond
Configuring OSPF GR features for Huawei devices
Network protocol model
Baidu online AI competition - image processing challenge: the 8th program of handwriting erasure
PAT(乙级)2022年夏季考试
【无App Push 通用测试方案
MySQL之数据类型
Caused by:org.gradle.api.internal.plugins . PluginApplicationException: Failed to apply plugin
[paper reading] nflowjs: synthetic negative data intensive anomaly detection based on robust learning
【C语言】字符串左旋
随机推荐
【无App Push 通用测试方案
CoordinatorLayout+NestedScrollView+RecyclerView 上拉底部显示不全
如何在业务代码中使用 ThinkPHP5.1 封装的容器内反射方法
P问题、NP问题、NPC问题、NP-hard问题详解
Detailed explanation of BF and KMP
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
Reading notes of effective managers
公司視頻加速播放
Raised a kitten
[API interface tool] Introduction to postman interface
Software test interview questions - Test Type
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
ICLR 2022 spotlight | analog transformer: time series anomaly detection method based on correlation difference
Investment strategy discussion and market scale prediction report of China's solid state high power amplifier industry from 2022 to 2028
HCIA复习
Web界面元素的测试
Buuctf-[[gwctf 2019] I have a database (xiaoyute detailed explanation)
黑猫带你学UFS协议第18篇:UFS如何配置逻辑单元(LU Management)
Novice entry SCM must understand those things
数字三角形模型 AcWing 1015. 摘花生