前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试多种路由规则匹配优先级

测试多种路由规则匹配优先级

作者头像
星哥玩云
发布2022-09-15 14:22:40
8730
发布2022-09-15 14:22:40
举报
文章被收录于专栏:开源部署

1、测试多种路由规则匹配优先级

1.1、编写综合路由规则

代码语言:javascript
复制
spring.application.name=gateway-java-api
server.port=50010
#id:自定义路由ID
spring.cloud.gateway.routes[0].id=weight_route1
#uri:目标服务地址
spring.cloud.gateway.routes[0].uri=http://localhost:50020
#predicates:路由条件。Predicate根据输入参数返回一个布尔值。其包含多种默认方法来将Predicate组合成复杂的路由逻辑
spring.cloud.gateway.routes[0].predicates[0]=Path=/hello
spring.cloud.gateway.routes[0].predicates[1]=Weight=Weight,4
spring.cloud.gateway.routes[0].predicates[2]=Query=name
#id:自定义路由ID
spring.cloud.gateway.routes[1].id=weight_route2
#uri:目标服务地址
spring.cloud.gateway.routes[1].uri=http://localhost:50021
#predicates:路由条件。Predicate根据输入参数返回一个布尔值。其包含多种默认方法来将Predicate组合成复杂的路由逻辑
spring.cloud.gateway.routes[1].predicates[0]=Path=/hello
spring.cloud.gateway.routes[1].predicates[1]=Weight=Weight,6
#id:自定义路由ID
spring.cloud.gateway.routes[2].id=path_route1
#uri:目标服务地址
spring.cloud.gateway.routes[2].uri=http://localhost:50022
#predicates:路由条件。Predicate根据输入参数返回一个布尔值。其包含多种默认方法来将Predicate组合成复杂的路由逻辑
spring.cloud.gateway.routes[2].predicates[0]=Path=/test
#id:自定义路由ID
spring.cloud.gateway.routes[3].id=path_route2
#uri:目标服务地址
spring.cloud.gateway.routes[3].uri=http://localhost:50023
#predicates:路由条件。Predicate根据输入参数返回一个布尔值。其包含多种默认方法来将Predicate组合成复杂的路由逻辑
spring.cloud.gateway.routes[3].predicates[0]=Path=/test

1.2、修改服务提供者代码

代码语言:javascript
复制
@RestController
public class HelloController {

    @Value("${provider.name}")
    private String name;

    @GetMapping("/hello")
    public String hello(@RequestParam(value = "name",required = false) String name){
        if (StringUtils.isEmpty(name)){
            name=this.name;
        }
        return name;
    }

    @GetMapping("/hello2")
    public String hello2(){
        return name;
    }

    @GetMapping("/test")
    public String test(){
        return name;
    }
}

1.3、启动4个服务提供者

端口号分别是50020,50021,50022,50023

名称分别是provider-1,provider-2,provider-3,provider-4

1.4、测试路由规则匹配情况

1、访问http://localhost:50010/hello?name=liu

1589217185267.png
1589217185267.png

2、访问http://localhost:50010/hello

3、访问http://localhost:50010/test

1589217309840.png
1589217309840.png

总结:

  • 根据权重匹配:同一组路由的优先级由权重决定
  • 根据路由id值匹配:不同组路由的优先级根据路由ID来计算。优先匹配ID小的路由。即,当一个请求满足多个路由谓词条件时,请求只会被首个成功匹配的路由转发
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、测试多种路由规则匹配优先级
    • 1.1、编写综合路由规则
      • 1.2、修改服务提供者代码
        • 1.3、启动4个服务提供者
          • 1.4、测试路由规则匹配情况
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档