Gateway 自定义路由断言|学习笔记

简介: 快速学习 Gateway 自定义路由断言

开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第三阶段Gateway自定义路由断言】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/685/detail/11891


Gateway 自定义路由断言

自定义路由断言工厂

我们来设定一个场景:假设我们的应用仅仅让 age 在(min,max)的人来访问。

第1步:在配置文件中,添加一个 Age 的断言配置

第2步:自定义一个断言工厂,实现断言方法

我们按照上面的两个步骤写一个代码:

第一步,在配置文件中添加一个配置 Age=18,60,意义:仅仅让age在18到60之间的人访问‘

routes: #路由数组 [路由就是指当请求满足什么样的条件的时候转发到哪个微服务上,转发过程中还可以动一些手脚]

- id: product_route#当前路由发的标识,要求唯一,默认是 UUID

uri: http:7/localhost:8081#请求最终要被转发到的地址

uri: lb://service-product #1b 指的是负载均衡,后面跟的是具体微服务在nacos 中的标识

order: 1#路由的优先级,数字越小代表路由的优先级越高

predicates: #断言(条件判断,返回值是 boolean 转发请求要满足的条件)

- Path=/product-serv/**,#当请求路径满足 path 指定的规则时,此路由信息才会正常转发

- Age=18,60# 仅仅让 age 在18到60之间的人访问

filters: #过滤器(在请求传递过程中对请求做一些手脚)

- stripPrefix=1 #在请求转发之前去掉一层路径

第二步配置路由断言工厂

编写 AgeRoutePredicatefactor 配置

#这是一个自定义路由断言工厂类,要求有两个

//1名字必须是配置+RoutePredicateFactor 

//2必须继承 AbstractRoutePredicateFactory<配置类>

@Component

Public class AgeRoutePredicatefactor extends

AbstractRoute

PredicateFactor < AgeRoutePredicateFactor.Config > {

//构造函数

public AgeRoutePredicateFactory () {

super (AgeRoutePredicateFactory.config.class) ;

}

//读取配置文件中的参数值 给他复制到配置类中的属性上

public List<string> shortcutFieldorder () {

//这个位置的顺序必须跟配置文件中的值得顺序对应

return Arrays.asList(“mixAge”,“maxAge”)

}

//断言逻辑

Public Predicate<ServerWebExchange>

apply(AgeRoutePre

dicateFactory.config config ) {

return new Predicate<ServerWebExchange> () {

@Override

Public Boolean test(ServerWebExchange

serverWebExchange){

//1接受前台传入的 age 参数

String ageStr = serverWebExchange.getRequest

().getQuery

Params ().getFirst (k:”age”);

//2先判断是否为空

If (stringUtils.isNotEmpty(agestr) )  {

//3 如果不为空,再进行路由逻辑判断

int age = Integer.parseInt (agestr) ;

if (age < config.getMaxage ( ) && age >

config.getMinAge()) {

return true;

} else {

return false;

}

}

Return fasle;

}

//配置类用于接受配置文件中的对应参数

@Data

@NoArgsConStructor

public static class config {

private int mixAge

private int maxAge

}

找到 ApiGateway 重新启动,进行访问,输入 age=19,结果没有问题

相关文章
|
6月前
|
Java Spring
Spring Cloud Alibaba - 26 Gateway-自定义谓词工厂RoutePredicateFactory
Spring Cloud Alibaba - 26 Gateway-自定义谓词工厂RoutePredicateFactory
90 0
|
1月前
|
开发框架 Java .NET
线上debug&gateway自定义路由规则
【10月更文挑战第20天】本文介绍了线上调试和网关自定义路由规则的配置方法。线上调试部分涵盖日志记录、远程调试等内容,包括如何设置详细的日志级别、添加自定义日志信息以及使用ELK堆栈进行日志分析。网关自定义路由规则部分则讲解了Spring Cloud Gateway和Kong中基于路径、请求头、请求参数等条件的路由配置方法。
|
4月前
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
509 15
|
4月前
|
Java 微服务 Spring
SpringCloud gateway自定义请求的 httpClient
SpringCloud gateway自定义请求的 httpClient
195 3
|
6月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
289 0
|
5月前
|
Java Nacos 网络架构
Spring Cloud gateway 网关四 动态路由
Spring Cloud gateway 网关四 动态路由
|
5月前
|
微服务
springCloud之路由网关gateway
springCloud之路由网关gateway
|
6月前
|
JSON 安全 关系型数据库
SpringCloud Gateway 实现自定义全局过滤器 + JWT权限验证
SpringCloud Gateway 实现自定义全局过滤器 + JWT权限验证
|
6月前
|
Java Nacos 网络架构
SpringCloud Gateway的使用 + Nacos动态路由
SpringCloud Gateway的使用 + Nacos动态路由
|
6月前
|
网络架构
Gateway路由
Gateway路由