欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

如何使用spring ResponseEntity处理http响应

程序员文章站 2022-03-24 08:28:10
简介使用spring时,达到同一目的通常有很多方法,对处理http响应也是一样。本文我们学习如何通过responseentity设置http相应内容、状态以及头信息。responseentityres...

简介

使用spring时,达到同一目的通常有很多方法,对处理http响应也是一样。本文我们学习如何通过responseentity设置http相应内容、状态以及头信息。

responseentity

responseentity标识整个http相应:状态码、头部信息以及相应体内容。因此我们可以使用其对http响应实现完整配置。

如果需要使用responseentity,必须在请求点返回,通常在spring rest中实现。responseentity是通用类型,因此可以使用任意类型作为响应体:

可以通过编程方式指明响应状态,所以根据不同场景返回不同状态:

另外,还可以设置http响应头:

而且, responseentity提供了两个内嵌的构建器接口: headersbuilder 和其子接口 bodybuilder。因此我们能通过responseentity的静态方法直接访问。

最简单的情况是相应包括一个主体及http 200响应码:

大多数常用的http 响应码,可以通过下面static方法:

另外,可以能使用bodybuilder status(httpstatus status)和bodybuilder status(int status) 方法设置http状态。使用responseentity bodybuilder.body(t body)设置http响应体:

也可以自定义头信息:

因为bodybuilder.body()返回responseentity 而不是 bodybuilder,需要最后调用。注意使用headerbuilder 不能设置任何响应体属性。

尽管responseentity非常强大,但不应该过度使用。在一些简单情况下,还有其他方法能满足我们的需求,使代码更整洁。

替代方法

@responsebody

典型spring mvc应用,请求点通常返回html页面。有时我们仅需要实际数据,如使用ajax请求。这时我们能通过@responsebody注解标记请求处理方法,审批人能够处理方法结果值作为http响应体。

@responsestatus

当请求点成功返回,spring提供http 200(ok)相应。如果请求点抛出异常,spring查找异常处理器,由其返回相应的http状态码。对这些方法增加@responsestatus注解,spring会返回自定义http状态码。

直接操作相应

spring 也允许我们直接 javax.servlet.http.httpservletresponse 对象;只需要申明其作为方法参数:

但需要说明,既然spring已经提供底层实现的抽象和附件功能,我们不建议直接操作response。

总结:本文我们介绍了spring提供多种方式处理http响应,以及各自的优缺点,希望对你有帮助。

responseentity的基本简介

1、responseentity继承了httpentity

可以添加httpstatus状态码的httpentity的扩展类。被用于resttemplate和controller层方法

2、responseentity可以定义返回的httpstatus(状态码)

和httpheaders(消息头:请求头和响应头)httpstatus的状态码有以下几种

如何使用spring ResponseEntity处理http响应

3、responseentity的优先级高于@responsebody

在不是responseentity的情况下才去检查有没有@responsebody注解。如果响应类型是responseentity可以不写@responsebody注解,写了也没有关系。

简单的说@responsebody可以直接返回json结果,@responseentity不仅可以返回json结果,还可以定义返回的httpheaders和httpstatus

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。