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