You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Cloud API Gateway无法转发至Netflix DGS GraphQL端点求助

解决Spring Cloud Gateway转发Netflix DGS GraphQL请求404问题

问题原因

你当前的路由配置中,第二个路由的uri直接指定了完整路径http://localhost:3000/graphql,Spring Cloud Gateway会自动将原始请求的路径/userService/graphql追加到这个uri之后,最终转发的地址变成http://localhost:3000/graphql/userService/graphql,这与DGS服务的/graphql端点不匹配,导致返回404。而REST接口的路由因为uri指向服务根地址,请求路径追加后刚好匹配后端接口,所以可以正常工作。

修正后的路由配置

使用RewritePath过滤器将网关请求路径重写为DGS服务的/graphql路径,修改后的代码如下:

@Bean
fun routes(builder: RouteLocatorBuilder): RouteLocator{
  return builder.routes()
    .route{it.path("/v1/users/**").uri("http://localhost:3000")}
    .route{
      it.path("/userService/graphql")
        .filters{ f -> f.rewritePath("/userService/graphql", "/graphql") }
        .uri("http://localhost:3000")
    }
    .build()
}

另一种可选配置

也可以使用stripPrefix过滤器去掉请求路径中的/userService前缀,让剩余的/graphql直接映射到DGS服务的端点:

@Bean
fun routes(builder: RouteLocatorBuilder): RouteLocator{
  return builder.routes()
    .route{it.path("/v1/users/**").uri("http://localhost:3000")}
    .route{
      it.path("/userService/graphql")
        .filters{ f -> f.stripPrefix(1) }
        .uri("http://localhost:3000")
    }
    .build()
}

验证修改

配置更新后,重新启动网关服务,再次通过http://localhost:8080/userService/graphql发送GraphQL请求,应该能正常转发到DGS服务的/graphql端点并得到响应。

内容的提问来源于stack exchange,提问作者jwsinner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:55:16