春季启动。在 RestController 上转发

Kor*_*ext 4 java spring spring-boot

我正在实施一种替换短链接的机制。

我需要将请求转发给另一个控制器。我找到了如何在模型上在 spring 中执行此操作的示例,但我不明白如何在 RestControllers 中执行此操作

我发现的示例(使用模型)

@Controller
public class ShrotLinkForwardController {

   @RequestMapping("/s/*")
   public String myMethod(HttpServletRequest request) {
       return "forward:/difmethod";
   }
}
Run Code Online (Sandbox Code Playgroud)

或者也许我看错了方向,我需要做一个过滤器?

UPD。我不知道最终的端点,它是在转发方法中计算的。所以,我无法自动连接其他控制器

Tri*_*oan 5

有两种方法可以实现您想要的目标。

1. 直接调用目标控制器上的方法。

控制器只是普通的 Spring bean。您可以通过 autowire 获取它。

@Controller
public class ShrotLinkForwardController {

  @Autowired
  OtherController otherController;

  @RequestMapping("/s/*")
  public String myMethod(Model model) {
    otherController.doStuff();
    return ...;
  }
}
Run Code Online (Sandbox Code Playgroud)

2.通过返回字符串触发转发

要触发转发,请尝试返回 aString而不是ModelAndView

这就是您在问题中提到的方法。请注意,语法应该是forward:/forwardURL. 后面的字符串forward:是指向另一个控制器的 URL,而不是方法名称。

@Controller
public class ShrotLinkForwardController {

  @RequestMapping("/s/*")
  public String myMethod(Model model) {
    return "forward:/forwardURL";
  }
}
Run Code Online (Sandbox Code Playgroud)