ResponseEntity总结

@Author:Guzi499

@QQ:504305797

@Date:2020/01/11

1.理解

csdn某位大佬在一篇文章的评论中总结的很好,这里直接拿过来

  1. ResponseEntity的优先级高于@ResponseBody。在不是ResponseEntity的情况下才去检查有没有@ResponseBody注解。如果响应类型是ResponseEntity可以不写@ResponseBody注解,写了也没有关系。
  2. ResponseEntity 是在 org.springframework.http.HttpEntity 的基础上添加了http status code(http状态码),用于RestTemplate以及@Controller的HandlerMethod。它在Controller中或者用于服务端响应时,作用是和@ResponseStatus与@ResponseBody结合起来的功能一样的。用于RestTemplate时,它是接收服务端返回的http status code 和 result的。
  3. 总结:简单粗暴的讲 @ResponseBody可以直接返回Json结果, @ResponseEntity不仅可以返回json结果,还可以定义返回的HttpHeaders和HttpStatus

其实我之前在某论坛上也看到有人这样介绍ResponseEntity<T>(忘记原话了):

  • 一般我们返回结果都是自定义vo类返回给前台,但是你要是没有其他需要的话,直接用ResponseEntity<T>来返回你想返回的对象。

2.基本使用

@RequestMapping(value="/demo1"`)
public ResponseEntity demo1(){//使用方式一//    ResponseEntity responseEntity = new ResponseEntity(new User("lvbb",24),HttpStatus.OK);//使用方式二   returnResponseEntity.ok(new User("lvbb",24));
}

ResponseEntity类继承自HttpEntity,有三个关键属性 httpStatus 、body、httpHeader,分别代表响应状态码、响应体、响应头信息;

2.1 返回状态码200

下面,我来演示一下目前我碰到的一些使用情况:

2.1.1 返回200且无返回值
@GetMapping("/hello")
public ResponseEntity<User> getBean(){//...业务处理中//只用关注这一句return ResponseEntity.ok(null);
}
2.1.2 返回200且有返回值
@GetMapping("/hello")
public ResponseEntity<User> getBean(){//...业务处理中User user = new User();user.setUserName("guzi");user.setAge(24);//只用关注这一句return ResponseEntity.ok(user);
}

2.2 返回状态码非200

先介绍一下ResponseEntity<T>中的方法,如果你能看得懂的话,就大概看一下,然后自己翻翻源码,如果能力有限,请看我案例,标注出来的为我目前使用过的方法。

2.2.1 返回状态码非200且无返回值
@GetMapping("/hello")
public ResponseEntity<User> getBean(){//...业务处理中//只用关注这一句return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
  • Httpstatus.INTERNAL_SERVER_ERROR代表已定义的相应状态码,如上则为INTERNAL_SERVER_ERROR(内部服务器错误)即状态码为500,再看看源码,发现是个枚举,也就是我们想返回什么状态码就直接选择对应的枚举项就OK了。这里我抛砖引玉,大家针对自己的情况选择对应的要返回的状态码。至于后面的build方法,要么参考源码(上图指针指向的接口被实现),要么百度,要么看我演示的两种情况。无返回对象用build方法,有返回用2.2.2中的body方法。

2.2.2 返回状态码非200且有返回值
@GetMapping("/hello")
public ResponseEntity<User> getBean(){//...业务处理中User user = new User();user.setUserName("guzi");user.setAge(24);//只用关注这一句return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(user);
}

2.3 返回状态码非200包含HttpHeaders和HttpStatus

这里目前没使用过,等用到了再补充,如果你准备保存这篇文章,也请你碰到时自行补充!

3.总结

个人观点:

除非有特殊需要,不然我是不会使用这玩意的…,一般请求成功我就返回 json,请求失败就返回 null 。当然了,特殊情况特殊对待。比如接口文档一定要你的返回状态头,自定义返回状态码,你还是得规矩听从的。

知乎上大佬观点:

如果仅仅需要返回json格式的数据,那么添加 @ResponseBody 注解就行了,其他的时候视情况再考虑使用。

ResponseEntity总结相关推荐

  1. springmvc二十七:springmvc-ResponseBody与ResponseEntity

    // @ResponseBody 将返回的数据放在响应体中// 如果返回的数据是对象,jackson包会自动将对象转为json格式@ResponseBody@RequestMapping(" ...

  2. [转发]SPRING MVC3.2案例讲解--SPRING MVC3的@ResponseBody和ResponseEntity

    在传统的开发过程中,我们的控制CONTROLL层通常需要转向一个JSP视图:但随着WEB2.0相关技术的崛起,我们很多时候只需要返回数据即可,而不是一个JSP页面. SPRING MVC3的@Resp ...

  3. spring ResponseEntity

    spring ResponseEntity 1. 用途 ​ ResponseEntity用于后台服务返回给前端发送数据的格式化.开始的时候,我们用json包生产一个json的字符串,配合http 协议 ...

  4. @ResponseBody ResponseEntity

    @ResponseBody ResponseEntity 1.产生疑问 我们知道,如果在 Controller 的某个方法上加上 @ResponseBody 注解,那么你就能拿到 json 数据. 如 ...

  5. 使用ResponseEntity统一返回数据

    使用ResponseEntity统一返回状态码和数据 它是Spring提供的一个类,它内部封装了状态码,请求头,请求体等信息,可以根据自己的需要去设置状态码.请求体的信息.ResponseEntity ...

  6. ResponseEntity

    ResponseEntity可以标识整个http相应,包括状态码.头部信息以及响应体内容: 可以使用任意类型作为响应体: 可以通过编程方式指明响应状态,根据不同场景返回不同状态: 设置http响应头: ...

  7. RestTemplate和ResponseEntity

    ResponseEntity 简介:继承自HttPEntity类,封装了请求后返回的响应头.响应体和响应状态. 作用:用于controller层向前端返回数据和状态码. 构造器: new Respon ...

  8. ResponseEntity进行下载

    项目实例: @GetMapping("getPermitSignFile")@ApiOperation(value = "获取许可证签名文件")public R ...

  9. SpringMVC通过ResponseEntity实现文件下载

    使用ResponseEntity实现下载文件的功能 所下载的图片路径如图所示: Controller: @RequestMapping("/testDown") public Re ...

  10. JAVA使用http包进行url接口调用以及返回值处理 HttpEntity ResponseEntity

    一个request包含 header和request body,我们用 HttpEntity<body,header>来构造一个请求 发出request之后会得到 response 用Re ...

最新文章

  1. 前端面试常考知识点---js
  2. BS文件夹上传操作(二) ——基本功能实现
  3. 计算机三级网络技术题库第15套,计算机等级考试理论试题第二十五套
  4. 深度探索C++ 对象模型(4)-Default Copy Constructor(3)
  5. 数据结构学习笔记(六):二叉树(Binary Tree)
  6. LeetCode 684. 冗余连接(并查集)
  7. supervisor管理mysql靠谱吗_Supervisor 从入门到放弃
  8. poj 1088(记忆化搜索)
  9. sql like不包括_SQL Like – SQL不喜欢
  10. java 实现MQTT客户端
  11. 纳多德通过ISO 9001质量、ISO 14001环境、ISO 45001职业健康安全国际管理体系认证
  12. Eclipse安装SVN检出项目插件Subclipse失败过程记录
  13. UCOSII 学习笔记(卢有亮视频相关习题)
  14. 没有大厂经验的前端可以这么写简历
  15. vue中Echart如何打包下载图片
  16. 上海大学计算机工程与科学学院研究生导师,上海大学计算机工程与科学学院硕士生导师刘方方...
  17. intel UHD graphics 620/630 -win7 驱动
  18. 再探矩阵求逆引理 : Woodbury恒等式的证明
  19. JS中正则表达式常用语法总结
  20. 计算机网络,看这篇就够了

热门文章

  1. 如何解决High Sierra 10.13.6 系统iCloud无法连接的问题?
  2. java开发深圳平均工资_深圳2017平均工资100173元!!这次你又又又拖后腿了吗!?...
  3. iOS: pch 如何添加项目中
  4. Java在后台获取USB二维码扫描枪扫描的内容
  5. 动态规划Dynamic programming笔记自用
  6. Java总结IO之总集篇
  7. WordPress缩略图出现A TimThumb error has occured解决办法
  8. Egret做微信好友排行榜
  9. Dataframe两个表格合并
  10. 怎样用excel剔除异常数据_如何剔除异常数据?