SpringMVC Redreict 请求的问题
学习笔记
- 问题:代码重构时,对接口的规范采用RESTful规范,在使用redirect:url 转发至其它Controller时出错,出现循环的重定向
- 原因: SpringMVC在后台处理代码的过程中,对于GET和POST请求的转发采用GET的方式,而对于PUT和DELETE请求的转发则是采用原有的请求方式,即PUT请求转发后仍会是用PUT的方式来处理
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/users", method = RequestMethod.GET)
@ResponseBody
public Users findAll() {
return userService.findAll();
}
@RequestMapping(value = "/users/{username}", method = RequestMethod.PUT)
public String updateUser(@RequestBody User user) {
userService.updateUser(user);
return "redirect:/users";
}
}
- 解决方法 :
暂无完好的解决方法,仅做记录。 - 临时方案:修改url,并修改可访问findAll()的请求RESTful
@RequestMapping(value = "/users", method = { RequestMethod.GET, RequestMethod.PUT})
@ResponseBody
public Users findAll() {
return userService.findAll();
}
@RequestMapping(value = "/user/{username}", method = RequestMethod.PUT)
public String updateUser(@RequestBody User user) {
userService.updateUser(user);
return "redirect:/users";
}