gateway 分发时若两个服务的路由地址一样,怎么指定访问想要的服务下的地址

1.思路

在使用Spring Cloud Gateway时,如果两个服务的路由地址相同,可以通过Predicate(断言)和Filter(过滤器)的组合来实现根据请求的不同条件将请求分发到不同的服务下的地址。

  1. 使用Predicate进行路由条件的判断:

    • 在定义路由时,可以使用不同的Predicate来区分相同路由地址的不同服务。例如,可以根据请求的Header、参数或者路径来区分请求应该被路由到哪个服务。
  2. 使用Filter对请求进行重定向:

    • 通过自定义Filter,可以根据请求的条件对请求进行重定向到不同的服务地址。在Filter中可以获取到请求的信息,并根据需要修改路由的目标地址。

2.在你的路由配置类中根据请求头跳转到不同的服务上

复制代码
@Configuration
public class CustomRouteConfig {
//service1_route 是路由id,
//lb://service1 中的 service1服务名

    @Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
        return builder.routes()
                .route("service1_route", r -> r.path("/api/**")
                        .and().header("serviceName", "service1")
                        //.filters(f -> f.rewritePath("/api/(?<segment>.*)", "/${segment}"))
                        .uri("lb://service1")
                )
                .route("service2_route", r -> r.path("/api/**")
                        .and().header("serviceName", "service2")
                       // .filters(f -> f.rewritePath("/api/(?<segment>.*)", "/${segment}"))
                        .uri("lb://service2")
                )
                .build();
    }
}

在上面的例子中,我们定义了两个路由,它们的路径都是"/api/**",但是通过Predicate中的Header条件来区分应该路由到哪个服务。当请求的Header中包含"X-Service"并且值为"service1"时,请求将被路由到service1服务;当值为"service2"时,则被路由到service2服务。

3.vue前端:在全局的api方法中增加配置的服务名

#对接后台服务名

VITE_MY_SERVICE_NAME=service1

复制代码
//动态配置请求头,找到对应的服务
const glob = useGlobSetting();
let serviceName= glob.myServiceName;
let MyHeaders={
  'serviceName': serviceName
};
if(config.headers==undefined){
  config.headers=MyHeaders;
}else{
  config.headers.serviceName = serviceName
}
相关推荐
Song_RsHt9 小时前
Gateway(下):过滤器与统一鉴权
spring boot·spring·gateway
Raas10010 小时前
MAI Gateway(魔芋企业级AI网关)选购攻略:AI网关哪个好?避坑指南与对比
大数据·人工智能·ai·gateway·ai网关·企业级ai网关
Song_RsHt15 小时前
Gateway (上):路由与转发,微服务的统一入口
java·笔记·后端·学习·gateway
4SAPI2 天前
官方API、API聚合平台与自建LLM Gateway:三种方案怎么选
大数据·人工智能·gateway·php
Raas1003 天前
AI网关怎么选?MAI Gateway(魔芋企业级AI网关)入选2026年企业级AI网关推荐清单
大数据·网络·人工智能·gateway·mai gateway
Raas1003 天前
AI网关能做调用审计吗?MAI Gateway(魔芋企业级AI网关)实战能力深度解读
java·服务器·网络·数据库·gateway·prompt·企业级产品
像风一样自由20204 天前
53.NginxAPI-Gateway与鉴权如何保护大模型接口
人工智能·大模型·gateway·智能体
Raas1004 天前
MAI Gateway(魔芋企业级AI网关)能力解析:AI网关能做调用审计吗?AI网关核心功能详解
大数据·网络·人工智能·gateway·ai网关·mai gateway
Raas1005 天前
MAI Gateway(魔芋企业级AI网关)功能全解:AI网关能做Prompt注入防护吗?一文看懂AI网关能力矩阵(v1.2.0)
网络·人工智能·gateway·prompt·mai gateway·企业级ai网关·企业级产品