我有一个Spring REST控制器:
@RestController
@RequestMapping("v1/employee")
public class controller1 {
getMethod(@PathVariable String param1, String param2){}
postMethod(){}
}
我想引入一个新的端点版本v2
来解析参数:param1,param2并转发到v1
请求URL。
我希望新客户端能够呼叫v2
,而旧客户端仍然能够呼叫v1
端点。我看了拦截器和过滤器。所以我应该,
有更好的方法吗?谢谢。
答案 0 :(得分:1)
这实际上取决于您的应用程序的性质
首先,控制器应该只封装与HTTP相关的内容,因此业务逻辑可能在Services中实现。
如果是这样,那么如果您在谈论同一个Java应用程序,则无需重定向请求,最好将服务注入新的控制器并调用它。
class OldController {
MyService srv;
@GetMapping(...)
public oldGet() {
srv.doSomething();
}
}
class NewController {
MyService srv;
@GetMapping(...)
public newGet() {
srv.doSomething();
//or
srv.doSomethingElse();
}
}
现在,对于路由,您甚至可以在外部进行路由(例如在某种代理中,该代理为您进行url重写并重定向到甚至可以驻留在其他服务器上的正确控制器。 这些解决方案是:
还有其他人