微服务架构-服务网关(Gateway)-断言功能详解

断言功能详解(Predict)

前面我们了解了Route的功能,这一节我们来看一下Gateway最重要的一个核心功能-断言,这个功能决定了一个HTTP请求应该由哪个Route来做路由。

1、Predicate机制

Predicate 是Java 8中引入的一个新功能,就和我们平时在项目中写单元测试时用到的Assertion差不多,Predicate 接收一个判断条件,返回一个 ture 或 false 的布尔值结果,告知调用方判断结果。你也可以通过and (与),or(或)和negative(非) 三个操作符将多Predicate 串联在一块共同判断。

前面说到Gateway是挡在微服务前面的街达室大爷,那这Predicate 就是和大答的接头暗号。比如大爷可以要求你的Request中必须带有某个指定的参数叫name。对应的值必须是一个指定的人名“马冬梅”,如果你的Request中没有包含name,或者对应的人名给成了“马北梅”,那就是断言失败,只有当你的请求完全和接头暗号匹配的时候,大爷才能给你放行。

说白了Predicate就是一种路由规则,通过Gateway中丰富的内置断言的组合,我们就能让一个请求找到对应的Route来处理。

1.1)断言的作用阶段

一个请求在抵达网关层后,首先就要进行断言匹配,在满足所有断言之后才会进入Filter阶段,有关Fiter的内容将在接下来的小节内详细介绍。

2、常用断言介绍

Gateway提供了十多种内置断言,我们选几种常用的断言规则跟大家介绍下:

2.1)路径匹配

Path断言是最常用的一个断言请求,几乎所有路由都要便用到它,我们来看一下它的例子:

.route(r -> r.path("/gateway/**")
             .uri("lb://FEIGN-SERVICE-PROVIDER/")
)
.route(r -> r.path("/baidu")
             .uri(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值