1谓词 · SpringCloud微服务实战 · 看云

在简单使用这一节我们主要来说一下内置的路由,并介绍如何使用。

Spring Cloud Gateway内置了一系列的路由谓词工厂,以便我们可以在开发中灵活的使用Gateway进行请求转发。我这里将Gateway内置的所有路由谓词工厂整理成了表格,如下:

路由谓词工厂 作用 参数
After 当且仅当请求时的时间After配置的时间时,才转发该请求 一个带有时区的具体时间
Before 当且仅当请求时的时间Before配置的时间时,才转发该请求 一个带有时区的具体时间
Between 当且仅当请求时的时间Between配置的时间段时,才转发该请求 一个带有时区的具体时间段
Cookie 当且仅当请求时携带的Cookie名称及值与配置的名称及值相符时,才转发该请求 Cookie的名称及值,支持使用正则表达式来匹配值
Header 当且仅当请求时携带的Header名称及值与配置的名称及值相符时,才转发该请求 Header的名称及值,支持使用正则表达式来匹配值
Host 当且仅当请求时名为Host的Header的值与配置的值相符时,才转发该请求 Host的值,支持配置多个且支持使用通配符
Method 当且仅当请求时所使用的HTTP方法与配置的请求方法相符时,才转发该请求 HTTP请求方法,例如GET、POST等
Path 当且仅当请求时所访问的路径与配置的路径相匹配时,才转发该请求 通配符、占位符或具体的接口路径,可以配置多个
Query 当且仅当请求时所带有的参数名称与配置的参数名称相符时,才转发该请求 参数名称和参数值(非必须),支持使用正则表达式对参数值进行匹配
RemoteAddr 当且仅当请求时的IP地址与配置的IP地址相符时,才转发该请求 IP地址或IP段
Weight 当且仅当配置了权重,并且多余一个的情况时,根据配置的权重才可以调用具体的服务,一般调用的服务是同一个且负载部署的应用。 数字,数据越大,被调用的次数越多。

注意:当predicates配置项只配置了一个Predicate且没有配置Path时,Path的默认值为/**

使用以下代码可以打印带有时区的当前时间,然后再自行修改成特定时间即可:

System.out.println(ZonedDateTime.now());

下面我们针对每个谓词进行分析
所有的谓词和过滤器是可以根据需求整合在一起使用的