我不知道如何正确地执行它应该作为一个REST服务春季控制器。 特别是我想尝试使界面尽可能宁静。 此外,我想利用HTTP错误代码,所以我的客户可以采取相应的行动。
我不知道如何实现我的方法,让他们返回JSON如果一切正常(在响应主体)或抛出一个HTTP错误代码以及自定义的原因,它没有工作(也许从DAO来了错误或数据库)。 但是我不知道哪一个才是正确的方式? 返回一个字符串,并添加值恢复到模型,或返回一个HashMap,把我的东西在里面? 或者直接返回的对象? 但随后如果错误occures和我不能回说类? 返回null呢? 我张贴这样做,我可以想像的2-3方式:
@RequestMapping(value="/addUser", method= RequestMethod.POST)
public String addUser(@RequestBody User user, HttpServletResponse response, Model model) throws Exception{
try{
userService.addUser(user);
model.addAttribute("user", userService.getUser(user.getUsername(), user.getPassword()));
return "user";
}catch(Exception e){
model.addAttribute("error", e.toString());
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString());
return "error";
}
}
或者说这种方式:
@RequestMapping(value="/addUser", method= RequestMethod.POST)
public @ResponseBody Map addUser(@RequestBody User user, HttpServletResponse response){
Map map = new HashMap();
try{
userService.addUser(user);
map.put("success", true);
map.put("username", user.getUsername());
}catch (KeyAlreadyExistsException e){
map.put("success", false);
map.put("Error", e.toString());
response.sendError(HttpServletResponse.SC_FORBIDDEN, e.toString());
}catch(Exception e){
map.put("success", false);
map.put("Error", e.toString());
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.toString());
}
finally {
return map;
}
}
我知道代码是不是“刚刚好”,但我无法弄清楚如何使它它需要的方式。 也许有些经验的反应将帮助? THX对于已经支持