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,结果没有问题

相关文章
|
Java Spring
Spring Cloud Alibaba - 26 Gateway-自定义谓词工厂RoutePredicateFactory
Spring Cloud Alibaba - 26 Gateway-自定义谓词工厂RoutePredicateFactory
242 0
|
3月前
|
负载均衡 监控 Java
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
本文详细介绍了 Spring Cloud Gateway 的核心功能与实践配置。首先讲解了网关模块的创建流程,包括依赖引入(gateway、nacos 服务发现、负载均衡)、端口与服务发现配置,以及路由规则的设置(需注意路径前缀重复与优先级 order)。接着深入解析路由断言,涵盖 After、Before、Path 等 12 种内置断言的参数、作用及配置示例,并说明了自定义断言的实现方法。随后重点阐述过滤器机制,区分路由过滤器(如 AddRequestHeader、RewritePath、RequestRateLimiter 等)与全局过滤器的作用范围与配置方式,提
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
|
4月前
|
API
使用Gateway with Inference Extension路由外部MaaS服务
本文介绍如何通过Gateway with Inference Extension对接百炼服务,实现请求路由时自动添加API Key并重写路径,包含操作步骤及验证方法。
|
8月前
|
JSON API Go
Golang工程组件:自定义HTTP规则的grpc-gateway选项
总的来说,grpc-gateway提供了一种简单有效的方式来为你的gRPC服务提供RESTful风格的API。通过自定义HTTP规则,你可以灵活地定义你的API的行为,以满足你的应用的需求。
215 27
|
9月前
|
存储 人工智能 Kubernetes
ACK Gateway with AI Extension:面向Kubernetes大模型推理的智能路由实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with AI Extension组件,在Kubernetes环境中为大语言模型(LLM)推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
1256 0
|
开发框架 Java .NET
线上debug&gateway自定义路由规则
【10月更文挑战第20天】本文介绍了线上调试和网关自定义路由规则的配置方法。线上调试部分涵盖日志记录、远程调试等内容,包括如何设置详细的日志级别、添加自定义日志信息以及使用ELK堆栈进行日志分析。网关自定义路由规则部分则讲解了Spring Cloud Gateway和Kong中基于路径、请求头、请求参数等条件的路由配置方法。
254 1
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
2179 15
|
Java 微服务 Spring
SpringCloud gateway自定义请求的 httpClient
SpringCloud gateway自定义请求的 httpClient
616 3
|
Java Nacos 网络架构
Spring Cloud gateway 网关四 动态路由
Spring Cloud gateway 网关四 动态路由

热门文章

最新文章