随笔 - 1357  文章 - 0  评论 - 1104  阅读 - 1941万

gateway-路由断言工厂Route Predicate Factory

PredicateFactory的作用是什么?
--读取用户定义的断言条件,对请求做出判断

Path=/user/**是什么含义?
--路径是以/user开头的就认为是符合的


网关路由可以配置的内容包括:
1.路由id:路由唯一标示
2.uri:路由目的地,支持lb和http两种
3.predicates:路由断言,判断请求是否符合要求,符合则转发到路由目的地
4.filters:路由过滤器,处理请求或响应

路由断言工厂Route Predicate Factory
application.yml配置文件中写的断言规则只是字符串,这些字符串会被Predicate Factory读取并处理,转变为路由判断的条件

例如Path=/user/**是按照路径匹配,这个规则是由org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory类来处理的

像这样的断言工厂在SpringCloudGateway还有十几个

Spring提供了11种基本的Predicate工厂:

复制代码
名称      说明                       示例
After    是某个时间点后的请求       - After=2037-01-20T17:42:47.789-07:00[America/Denver]
Before   是某个时间点之前的请求       - Before=2031-04-13T15:14:47.433+08:00[Asia/Shanghai]
Between    是某两个时间点之前的请求   - Between=2037-01-20T17:42:47.789-07:00[America/Denver], 2037-01-21T17:42:47.789-07:00[America/Denver]
Cookie    请求必须包含某些cookie       - Cookie=chocolate, ch.p
Header    请求必须包含某些header       - Header=X-Request-Id, \d+
Host    请求必须是访问某个host(域名)    - Host=**.somehost.org,**.anotherhost.org
Method    请求方式必须是指定方式       - Method=GET,POST
Path    请求路径必须符合指定规则    - Path=/red/{segment},/blue/**
Query    请求参数必须包含指定参数    - Query=name, Jack或者- Query=name
RemoteAddr    请求者的ip必须是指定范围    - RemoteAddr=192.168.1.1/24
复制代码

 

application.yml配置文件:

复制代码
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: tajia-nacos:80 # nacos地址
    gateway:
      routes:
        - id: user-service # 路由标示,必须唯一
          uri: lb://userservice # 路由的目标地址
          predicates: ## 路由断言,也就是判断请求是否符合路由规则的条件
            - Path=/user/** # 路径断言,判断路径是否是以/user开头,如果是则符合
        - id: order-service
          uri: lb://orderservice
          predicates:
            - Path=/order/**
            - Before=2037-01-20T17:42:47.789-07:00[Asia/Shanghai]
            #- After=2037-01-20T17:42:47.789-07:00[Asia/Shanghai]
      default-filters:
        - AddRequestHeader=Truth,Itcast is freaking awesome!
复制代码

 

posted on   Ruthless  阅读(520)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
历史上的今天:
2018-10-04 spring cloud feign的各种配置的使用
2013-10-04 林计钦语录
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示