【问题标题】:Call a function by its REST API URL in Spring Boot在 Spring Boot 中通过其 REST API URL 调用函数
【发布时间】:2016-06-27 16:28:08
【问题描述】:

我不知道这是否可以直接实现(当然,还有其他更麻烦的方法可以做到这一点),但我希望能够在 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);
}

我意识到我可以解析字符串并通过一堆条件来获得我的结果,但是有没有更弹性的方式来做到这一点 - 比如通过调用callSomeFunctionByURL,或者会我只需要用旧方法吗? (对于那些想知道为什么会发生这种情况的人,这是一个理论问题)

【问题讨论】:

    标签: java spring spring-boot rest


    【解决方案1】:

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

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

    如果这个逻辑没有被控制器类处理,那么它应该被移动到另一个层,称为 presentation 层。这个层没有被Spring覆盖,所以你应该自己做。

    【讨论】:

      【解决方案2】:

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

      代替

      return request;
      

      改成

      return "redirect:"+request;
      

      return "forward:"+request;
      

      编辑

      如果控制器是RestController,则返回new ModelAndView(request)

      【讨论】:

      • 当我这样做时,我的服务器只返回“forward:/someUrl/”。我猜这不是预期的行为。我错过了什么吗?
      • ModelAndView 只做POST 请求吗?我怎样才能让它做一个GET 甚至一个PUT
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 2019-01-06
      • 1970-01-01
      • 2018-10-06
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      相关资源
      最近更新 更多