休息顶部

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

>>查看课程

1.介绍

在此快速教程中,我们提供了一个简明的春天概述@RequestBody.@ResponseBody.注释。

进一步阅读:

春季处理程序映射指南

该文章介绍了处理方法如何将URL解析为特定处理程序。

弹簧控制器的快速指南

弹簧控制器的快速实用指南 - 均用于典型的MVC应用和休息API。

Spring @Controller和@RestController注释

了解Spri金宝搏官网188beng MVC中@Controller和@RestController注释之间的差异。

2。@RequestBody.

简单的说,@RequestBody.注释地图映射httprequest正文到传输或域对象,启用自动反序列化入境httprequest身体到java对象上。

首先,让我们看看Spring Controller方法:

@postmapping(“/请求”)公共响应性PostController(@RequestBody LoginForm LoginForm){emailservice.fakeAuthenticate(loginform);return anderthentity.ok(httpstatus.ok);}

Spring自动将JSON DESERIALIATIALIACE TEAGAIN类型,假设指定了合适的Java类型。

默认,我们用诠释的类型@RequestBody.注释必须对应于我们的客户端控制器发送的JSON:

公共类LoginForm {私有字符串用户名;私有字符串密码;// ......}

在这里,我们用来代表的对象httprequest身体地图到我们的登录表格目的。

让我们使用curl测试这个:

curl -i \ -h“接受:application / json”\ -h“content-type:application / json”\ -x post --data“{”用户名“:”Johnny“,”密码“:”密码“}'“https:// localhost:8080 / ... /请求”

这就是我们需要一个Spring REST API和使用@的角度客户端所需的全部请求人员注解。

3.@ResponseBody.

@ResponseBody.注释告诉一个控制器,返回的对象被自动序列化为json并传回httpresponse.目的。

假设我们有自定义回复目的:

公共类ResponseTransfer {私有字符串文本;//标准getters / setter}

接下来,可以实现相关的控制器:

@controller @requestmapping(“/ post”)公共类exampostcontroller {@autowired imagememice imageService;@postmapping(“/ response”)@ResponseByity Public ResponseTransfer PostrecenonSeController(@RequestBody LoginForm LoginForm){返回新响应权常规(“谢谢您发布!!!”);}}

在我们浏览器的开发人员控制台或使用邮递员等工具中,我们可以看到以下响应:

{“文字”:“谢谢你的发布!!!”}

请记住,我们不需要注释@ RESTCONTROLLER-带注释的控制器@ResponseBody.注解自从春天默认完成。

3.1。设置内容类型

当我们使用时@ResponseBody.注释,我们仍然能够明确设置我们的方法返回的内容类型。

为了那个原因,我们可以使用@requestmappping.s生产属性。请注意,注释@postmappping.@getMappping.等义义为该参数定义别名。

现在让我们添加一个新的终端点发送JSON响应:

@postmapping(value =“/ content”,producate = mediatype.application_json_value)@ResponseBody Public ResponseTransfer PostresponseJsonContent(@RequestBody LoginForm LoginForm){返回新responseTransfer(“JSON内容!”);}

在该示例中,我们使用了mediatype.application_json_value.不变。或者,我们可以使用应用/ JSON.直接地。

接下来,让我们实现一种新方法,映射到同一个/内容路径,但返回XML内容:

@postmapping(value =“/ content”,producate = mediatype.application_xml_value)@ResponseBody Public ResponseTransfer PostresponseXmlContent(@RequestBody LoginForm LoginForm){返回新responseTransfer(“XML内容!”);}

现在,取决于一个值接受在请求的标题中发送的参数,我们将获得不同的响应。

让我们在行动中看到这一点:

curl -i \ -h“接受:application / json”\ -h“content-type:application / json”\ -x post --data“{”用户名“:”Johnny“,”密码“:”密码“}'“https:// localhost:8080 /.../内容”

CURL命令返回JSON响应:

http / 1.1 200内容类型:应用程序/ JSON传输 - 编码:Chunked日期:THU,2月20日2月19:43:06 GMT {“TEXT”:“JSON内容!”}

现在,让我们改变接受范围:

curl -i \ -h“接受:application / xml”\ -h“content-type:application / json”\ -x post --data {“用户名”:“Johnny”,“密码”:“密码”}'“https:// localhost:8080 /.../内容”

预期,我们这次得到XML内容:

http / 1.1 200内容类型:应用程序/ XML传输 - 编码:Chunked日期:Thu,2月20日2月20日19:43:19 GMT   XML内容! 

4。结论

我们为Spring应用程序构建了一个简单的角度客户端,演示了如何使用@RequestBody.@ResponseBody.注释。

此外,我们展示了如何在使用时设置内容类型@ResponseBody.

一如既往,代码样本可用在github上

休息底部

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

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