在Spring Boot中通过其REST API URL调用函数

时间:2016-06-27 16:28:08

标签: java spring rest

我不知道这是否可以直接实现(当然,还有其他更麻烦的方法),但我希望能够通过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,或者我会有以旧的方式做到这一点? (对于那些想知道为什么会出现这种情况的人来说,这是一个理论问题)

2 个答案:

答案 0 :(得分:0)

我认为你可以使用重定向和转发

而不是

return request;

将其更改为

return "redirect:"+request;

return "forward:"+request;

修改

如果控制器为new ModelAndView(request)

,则

返回RestController

答案 1 :(得分:0)

理论上,您应该将业务逻辑移至服务层以使用它们周围的事务。

在某些情况下,您在视图层上执行一些复杂的逻辑,可以使用您可以创建或注入到控制器的bean,以便在许多控制器方法中使用并返回结果。

如果控制器类未处理此逻辑,则应将其移至另一个名为 presentation 层的层。 Spring不会覆盖此层,因此您应该自己完成。