我不知道这是否可以直接实现(当然,还有其他更麻烦的方法),但我希望能够通过Spring Boot中的URL调用函数。
例如,假设我有一个@RestController
并且在该休息控制器中有一个如下所示的函数:
@RequestMapping(value = "/", produces = "application/json", method = RequestMethod.POST)
public String myRequest(@RequestParam("request") String request) {
return request;
}
我希望能够做的是让用户传递我的API的不同端点的相对URL,我的代码将调用api的那部分。例如:
// Pass in "/otherRequest/SomeInfo"
@RequestMapping(value = "/", produces = "application/json", method = RequestMethod.POST)
public String myRequest(@RequestParam("request") String request) {
//Goes to the function that handles "/otherRequest/SomeInfo"
// and returns its value
return callSomeFunctionByURL(request);
}
我意识到我可以解析字符串并通过一系列条件来获得我的结果,但是有更多的“Springy”方式来做这件事 - 比如通过调用callSomeFunctionByURL
,或者我会有以旧的方式做到这一点? (对于那些想知道为什么会出现这种情况的人来说,这是一个理论问题)
答案 0 :(得分:0)
我认为你可以使用重定向和转发
而不是
return request;
将其更改为
return "redirect:"+request;
或
return "forward:"+request;
修改强>
如果控制器为new ModelAndView(request)
,则返回RestController
答案 1 :(得分:0)
理论上,您应该将业务逻辑移至服务层以使用它们周围的事务。
在某些情况下,您在视图层上执行一些复杂的逻辑,可以使用您可以创建或注入到控制器的bean,以便在许多控制器方法中使用并返回结果。
如果控制器类未处理此逻辑,则应将其移至另一个名为 presentation 层的层。 Spring不会覆盖此层,因此您应该自己完成。