当前位置:网站首页>自定义指定路由上的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
边栏推荐
- (中)苹果有开源,但又怎样呢?
- SQLMAP使用教程(三)实战技巧二
- Dynamic programming -- knapsack problem
- Coordinatorlayout+nestedscrollview+recyclerview pull up the bottom display is incomplete
- CoordinatorLayout+NestedScrollView+RecyclerView 上拉底部显示不全
- 【Postman】测试(Tests)脚本编写和断言详解
- C language bubble sort
- ICLR 2022 spotlight | analog transformer: time series anomaly detection method based on correlation difference
- 公司视频加速播放
- Title 1093: character reverse order
猜你喜欢
Novice entry SCM must understand those things
Overview of three core areas of Mathematics: algebra
Function of activation function
ContentType的作用
Manhattan distance sum - print diamond
JMeter做接口测试,如何提取登录Cookie
黑猫带你学UFS协议第4篇:UFS协议栈详解
Function of contenttype
Detailed explanation of BF and KMP
[postman] test script writing and assertion details
随机推荐
功能安全之故障(fault),错误(error),失效(failure)
GTSAM中ISAM2和IncrementalFixedLagSmoother说明
[postman] collections - run the imported data file of the configuration
IP day 16 VLAN MPLS configuration
Application du Groupe Li dans gtsam
请求转发与重定向
LeetCode 729. 我的日程安排表 I
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
Detailed explanation of BF and KMP
Investment strategy discussion and market scale prediction report of China's solid state high power amplifier industry from 2022 to 2028
Basic knowledge of error
【Postman】测试(Tests)脚本编写和断言详解
【微信小程序】搭建开发工具环境
Linux regularly backs up MySQL database
Overview of three core areas of Mathematics: geometry
Usage of test macro of GTEST
Thoughts on data security (Reprint)
HCIA review
公司視頻加速播放