重定向到具有 @RequestBody 参数的 API
Redirect to an API that has @RequestBody arguments
下面的 API 是从 UI 调用的,它希望被其他 API 重定向到。
@RequestMapping(value = "/showAbc", method = RequestMethod.POST)
public ModelAndView showAbc(@RequestBody Abc abcInstance) {
//doSomething
}
下面的 API 也是从 UI 端调用的,但是它使用存储库调用获取 Abc class 的实例,现在想调用上面的 API 使用重定向,并且还想将实例作为参数传递。
@RequestMapping(value = "/showBcd", method = RequestMethod.POST)
public ModelAndView showBcd(@RequestParam String bcdId){
Abc abc = abcRepository.findByBcdId(bcdId);
/* How to pass the instance of Abc, when redirecting to /showAbc */
return new ModelAndView("redirect:/showAbc");
}
现在,在上面的重定向中,当从 /showBcd 重定向到 /showAbc 时,我还想传递 Abc 的实例。
请试试这个
ModeAndView m = new ModelAndView("redirect:/showAbc");
Abc abc = abcRepository.findByBcdId(bcdId);
m.addObject("abc",abc);
return m;
我不建议将一个 API 调用到另一个,如果它在同一个应用程序中。通过这种方式,您可以将 API 与 API 紧密耦合。将要调用的 API 合约留给 UI 或通过普通 java 服务调用处理委托。
@RequestMapping(value = "/showAbc", method = RequestMethod.POST)
public ModelAndView showAbc(@RequestBody Abc abcInstance) {
return new ModelAndView("abc",abcService.get());
}
@RequestMapping(value = "/showBcd", method = RequestMethod.POST)
public ModelAndView showBcd(@RequestParam String bcdId){
// You should move this repo call to bcdService.java
Abc abc = abcRepository.findByBcdId(bcdId);
//Use a normal service call to get the instance instead of a API call
return new ModelAndView("abc",abcService.getViaInstance(abc));
}
但是,要将模型传递给视图(转发请求),您需要将模型添加为:
ModeAndView m = new ModelAndView("forward:/showAbc");
Abc abc = getAbcInstance();
m.addObject("abc",abc);
return m;
下面的 API 是从 UI 调用的,它希望被其他 API 重定向到。
@RequestMapping(value = "/showAbc", method = RequestMethod.POST)
public ModelAndView showAbc(@RequestBody Abc abcInstance) {
//doSomething
}
下面的 API 也是从 UI 端调用的,但是它使用存储库调用获取 Abc class 的实例,现在想调用上面的 API 使用重定向,并且还想将实例作为参数传递。
@RequestMapping(value = "/showBcd", method = RequestMethod.POST)
public ModelAndView showBcd(@RequestParam String bcdId){
Abc abc = abcRepository.findByBcdId(bcdId);
/* How to pass the instance of Abc, when redirecting to /showAbc */
return new ModelAndView("redirect:/showAbc");
}
现在,在上面的重定向中,当从 /showBcd 重定向到 /showAbc 时,我还想传递 Abc 的实例。
请试试这个
ModeAndView m = new ModelAndView("redirect:/showAbc");
Abc abc = abcRepository.findByBcdId(bcdId);
m.addObject("abc",abc);
return m;
我不建议将一个 API 调用到另一个,如果它在同一个应用程序中。通过这种方式,您可以将 API 与 API 紧密耦合。将要调用的 API 合约留给 UI 或通过普通 java 服务调用处理委托。
@RequestMapping(value = "/showAbc", method = RequestMethod.POST)
public ModelAndView showAbc(@RequestBody Abc abcInstance) {
return new ModelAndView("abc",abcService.get());
}
@RequestMapping(value = "/showBcd", method = RequestMethod.POST)
public ModelAndView showBcd(@RequestParam String bcdId){
// You should move this repo call to bcdService.java
Abc abc = abcRepository.findByBcdId(bcdId);
//Use a normal service call to get the instance instead of a API call
return new ModelAndView("abc",abcService.getViaInstance(abc));
}
但是,要将模型传递给视图(转发请求),您需要将模型添加为:
ModeAndView m = new ModelAndView("forward:/showAbc");
Abc abc = getAbcInstance();
m.addObject("abc",abc);
return m;