如何在modelandview或响应体之间切换?

时间:2016-01-30 12:25:54

标签: rest spring-mvc

我想开发一个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 以及根据请求的响应体。

1 个答案:

答案 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回答了这样的问题,还有其他答案