【问题标题】:how can switch between modelandview or response body?如何在模型和视图或响应体之间切换?
【发布时间】:2016-01-30 12:25:54
【问题描述】:

我想开发一个 spring-mvc 应用程序,它将 还使用 REST 公开服务。

我的问题是如何使用相同的 contorller(current) 方法 产生服务响应?

如何在模型和视图或响应体之间切换?

例如:

@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);
}

如何使用上述方法返回模型和视图 以及根据请求的响应主体。

【问题讨论】:

    标签: rest spring-mvc


    【解决方案1】:

    您可以将 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回答过这样的问题,还有其他答案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 2021-06-05
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      相关资源
      最近更新 更多