当前位置:网站首页>自定义指定路由上的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
边栏推荐
- [API interface tool] Introduction to postman interface
- Sqlmap tutorial (III) practical skills II
- 曼哈顿距离和-打印菱形
- Introduction to promql of # yyds dry goods inventory # Prometheus
- ICLR 2022 spotlight | analog transformer: time series anomaly detection method based on correlation difference
- Novice entry SCM must understand those things
- PAT(乙级)2022年夏季考试
- Baidu online AI competition - image processing challenge: the 8th program of handwriting erasure
- 对数据安全的思考(转载)
- How to use the container reflection method encapsulated by thinkphp5.1 in business code
猜你喜欢

Manhattan distance and Manhattan rectangle - print back font matrix

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

isam2运行流程

About PHP startup, mongodb cannot find the specified module

Seven imperceptible truths in software testing

浅谈专项测试之弱网络测试

Configuring OSPF GR features for Huawei devices

Postman核心功能解析-参数化和测试报告

JDBC Requset 对应内容及功能介绍

Hypothesis testing learning notes
随机推荐
使用Nacos管理配置
ICLR 2022 spotlight | analog transformer: time series anomaly detection method based on correlation difference
【eolink】PC客户端安装
LeetCode 729. 我的日程安排表 I
【Tera Term】黑猫带你学TTL脚本——嵌入式开发中串口自动化神技能
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
ContentType的作用
曼哈顿距离和-打印菱形
Grant Yu, build a web page you want from 0
Company video accelerated playback
Thoughts on data security (Reprint)
【Postman】测试(Tests)脚本编写和断言详解
As3013 fire endurance test of cable distribution system
Request forwarding and redirection
【C语言】qsort函数
Buuctf-[bjdctf2020]zjctf, but so (xiaoyute detailed explanation)
黑猫带你学UFS协议第4篇:UFS协议栈详解
Hypothesis testing learning notes
误差的基本知识
J'ai un chaton.