2016-11-15 157 views
2

我在获取Zuul路由配置时遇到了一个小问题。下面是我目前Zuul路由定义

zuul: 
    routes: 
    microservice: 
     path: /service/* 
     serviceId: session 
     sensitiveHeaders: Cookie,Set-Cookie,Authorization 
microservice: 
    ribbon: 
    listOfServers: localhost:8090 

在微服务,我有一个Restcontroller这样的:

@RestController 
@RequestMapping("/service") 

我有多个端点在RestController,例如:

@RequestMapping(method = { RequestMethod.GET}, value = "/service1", produces = "application/json") 

现在,当我发送了一个请求,如localhost:8080/service/service1,它没有达到预期的终点。它将请求路由到localhost:8090/service1(没有任何内容正在运行)。

它运作良好,如果我改变这样

@RestController 
@RequestMapping("/service") 

@RestController 
@RequestMapping("/") 

我试图从 路径改变的路径上下文路径:/服务/ *

path: /service/** 

但没有效果。

另一个选项是强制在过滤级别的路由,但我认为应该可以将localhost:8080/service/service1直接路由到微服务。关于如何在Zuul配置中完成此任务的任何建议。

我无法使用URL选项,因为它与我正在使用的回退不兼容。

回答

1

最简单的方法是停止前缀剥离;看起来像默认启用它。

path: /service/** 
stripPrefix: false