休息顶部

通过参考,使用Spring 5和Spring Boot 2开始学习春天课程:

>>查看课程

1.介绍

使用春天,我们通常有很多方法来实现相同的目标,包括微调HTTP响应。

在此简短的教程中,我们将看到如何使用HTTP响应的主体,状态和标题使用响应

进一步阅读:

通过休息保证获得和验证响应数据

看看如何休息用来验证和提取来自REST端点的响应

使用Spring @ResponseStatus设置HTTP状态代码

看看@ResponseStatus注释以及如何使用它来设置响应状态代码。

2。响应

响应代表整个HTTP响应:状态代码,标题和身体。结果,我们可以使用它来完全配置HTTP响应。

如果我们想使用它,我们必须从端点返回它;春天照顾休息。

响应是一种通用类型。因此,我们可以使用任何类型作为响应主体:

@getmapping(“/ hello”)anderthentity  hello(){return new andertentity <>(“Hello World!”,httpstatus.ok);}

由于我们以编程方式指定响应状态,因此我们可以为不同的场景返回不同的状态代码:

@getmapping(“/年龄”)响应年龄(@requestparam(“overfabiftabri胎”)int over yefitabirth){if(isinfuture(ovefuture(多年)){返回新的响应<>(“出生年份不能未来的年份”,httpstatus.bad_request);}返回新的响应<>(“您的年龄是”+计算(多年繁琐),httpstatus.ok);}

此外,我们可以设置HTTP标头:

@getmapping(“/ customheher”)andertentity  customheher(){httpheaders标题= new httpheaders();标题.Add(“自定义标题”,“foo”);返回新的andertentity <>(“自定义标题集”,标题,httpstatus.ok);}

此外,响应提供两个嵌套构建器接口标题为及其子接口,爱好健美者。因此,我们可以通过静态方法访问它们的能力响应

最简单的情况是使用正文和HTTP 200响应代码的响应:

@getmapping(“/ hello”)andertentity  hello(){return anderthententity.ok(“Hello World!”);}

最受欢迎HTTP状态代码我们获得静态方法:

BodyBuilder接受();BodyBuilder Badrequest();BodyBuilder创建(Java.net.Uri位置);headersbuilder <?> nocontent();标题<?> notfound();BodyBuilder OK();

另外,我们可以使用BodyBuilder状态(HttpStatus状态)BodyBuilder状态(INT状态)设置任何HTTP状态的方法。

最后,有响应爱好者.body(t body)我们可以设置HTTP响应正文:

@getmapping(“/年龄”)analystity 年龄(@requestparam(“overfabirth”)int over yefbirth){if(isinfuture(ovefuture(多年)){return anallytentity.badrequest()。Body(“出生年不可能未来”);返回analystity.status(httpstatus.ok).body(“您的年龄是”+计算(多年捕获));}

我们还可以设置自定义标题:

@getmapping(“/ compounheher”)andertentity  customheader(){return andertherentity.ok().header(“自定义标题”,“foo”).body(“自定义标题集”);}

自从BodyBuilder.Body()返回A.响应代替健美运动员,它应该是最后一个电话。

注意标题我们无法设置响应机构的任何属性。

返回时响应来自控制器的对象,我们可能会在处理请求时获得异常或错误,并希望将错误相关信息与表示为其他类型的用户,让我们说e

Spring 3.2为全球带来了支持@ExceptionHandler.与新的@ControllAdvice.注解,处理这些方案。有关深入的详细信息,请参阅现有文章这里

尽管响应非常强大,我们不应该过度使用它。在简单的情况下,还有其他满足我们需求的其他选项,它们导致更清晰的代码。

3.替代品

3.1。@ResponseBody.

在经典的Spring MVC应用中,端点通常返回呈现的HTML页面。有时我们只需要返回实际数据;例如,当我们使用带有Ajax的端点时。

在这种情况下,我们可以标记请求处理程序方法@ResponseBody., 和春天将方法的结果值视为HTTP响应主体本身。

想要查询更多的信息,这篇文章是一个很好的开始

3.2。@ResponseStatus.

当端点成功返回时,Spring提供了HTTP 200(OK)响应。如果端点抛出异常,则Spring查找异常处理程序,以告诉您要使用的HTTP状态。

我们可以使用@ResponseStatus标记这些方法,因此春季返回自定义HTTP状态

有关详细信息,请访问我们的文章金宝搏官网188be自定义状态代码

3.3。直接操纵响应

春天也让我们访问javax.servlet.http.httpservletresponse.直接对象;我们只需要将其声明为方法参数:

@getmapping(“/手动”)void手册(httpservletresponse响应)抛出ioException {response.setheader(“custom-header”,“foo”);Response.setStatus(200);response.getWriter()。Println(“Hello World!”);}

由于Spring提供了抽象和高于底层实现的额外功能,我们不应该以这种方式操纵响应

4。结论

在本文中,我们讨论了在Spring中操纵HTTP响应的多种方法,并检查了他们的好处和缺点。

像往常一样,可以使用示例在github上

休息底部

使用Spring 5和Spring Boot 2开始,通过学习春天课程 :

>>查看课程
评论在本文上关闭!