我想开发一个spring-mvc appication 还使用REST公开服务。
我的问题是如何使用相同的控制器(当前)方法 产生服务响应?
如何在modelandview或响应体之间切换?
例如:
@RequestMapping(value = "/user/", method = RequestMethod.GET)
public ResponseEntity<List<User>> listAllUsers() {
List<User> users = userService.findAllUsers();
if(users.isEmpty()){
return new ResponseEntity<List<User>>(HttpStatus.NO_CONTENT);//You many decide to return HttpStatus.NOT_FOUND
}
return new ResponseEntity<List<User>>(users, HttpStatus.OK);
}
如何使用上述方法返回modelandview 以及根据请求的响应体。
答案 0 :(得分:0)
您可以将MappingJackson2JsonView与来自this tutorial或@ResponseBody的模型模型一起使用
MappingJackson2JsonView是比ResponseBody
更好的实现但ResponseBody有一些优点。在@ResponseBody的帮助下,您可以返回对象而不是属性例如
class Student extends ResponseDTO{
public String name = "John"
}
...
@ResponseBody ResponseDTO getStudentInfo(){
return new Student();
}
结果将是{“name”:“John”}
使用MappingJackson2JsonView,您必须返回属性中的对象,如
{
"student": {
"name":"John"
}
}
使用@ResponseBody,您还可以使用内联对象扩展
返回结果 @ResponseBody getStudentInfo(){
return new Object(){
public String name="John"
};
}
但这不是好的实施
一些好的实现MappingJackson2JsonView很好。但是对于更多功能,如返回对象或返回ResponseDto,ResponseBody更有用。
我在another post回答了这样的问题,还有其他答案