开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情
什么是谓词
在Gateway 中谓词是满足某种条件再进行路由转发,比如我们在一个服务中提供了一个 /demo 的接口并且进行了相应的配置,那么访问这个接口的时候就是一个路由转发。
在Gateway 中所有的谓词都实现了 GatewayPredicate 接口这个接口中可以看到这些都是谓词,这里就有一个规律,就是谓词的名称刚好是该类前面的那个单词,比如 PathRoutePredicate 它得前缀是 Path 对应的就是 Path 谓词。
其实就是其中类名需要符合 XXXRoutePredicate ,其中 XXX 就是在配置文件中谓词的名称。
有哪些谓词
上面截图中以RoutePredicate结尾的都是谓词。
Query
它讲的是设置必须包含的参数名,也就是说请求配置的url的时候必须要携带对应的参数名是才能进行路由转发。
例如一个路径设置为: path=/demo/**, Query=abc
意思是当请求前缀是 /demo/ 的开头时请求参数中必须要携带 abc 参数名才能正常的路由转发,并且它不只是可以设置参数同时也可以设置请求参数的值,写法有两种
如果是在参数的值时候,不只是可以设置某个字符串的值或者某个数值,可以使用正则表达式进行配置
需要注意的是这里如果是写的正则那么前面 , 号要注意,因为 Gateway 会把 , 号前面的作为一个参数名,后面也作为另外一个参数名,就会出现报错的情况。
所以如果使用正则表达式的话不能和参数名放一起,而是要重新配置到 regexp 中;