现在大多数互联网项目都是采用前后端分离的方式开发,前端人员负责页面展示和数据获取,后端负责业务逻辑处理和接口封装。当与前端交互的过程当中,都是用json数据与前端进行交互,这样想取出前端传送过来的json数据的时候,就需要用到@RequestBody这个注解。@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为json、xml等格式的数据并绑定到controller方法的参数上。
1.后台用@RequestBody接收参数,从名称上来看也就是说要读取的数据在请求体里,所以要发post请求。前端必须指定请求json数据的contentType为:application/json,否则会报类型不支持的异常错误“org.springframework.web.HttpMediaTypeNotSupportedException”。
2.如何定义后台接收参数“能映射上去”呢?若是json中的key在实体中都能找到对应的field,那么就是“能映射上去”,也就是说:前台传入的json中的key在实体中必须要存在,不然就会报错,其实要使用@RequestBody这个注解还需要额外配置一个Bean,也就是自动帮我们接收json并转成对象的消息转换器MappingJacksonHttpMessageConverter,需要加入jackson的包依赖
com.fasterxml.jackson.core
jackson-core
2.8.1
3.后端接收到前端的数据,如果想对前端的数据进行校验,可以加入springboot的Validate 功能依赖包
org.hibernate
hibernate-validator
使用只需要在接收数据的实体上加上@Valid注解,BindingResult接收错误的不合法的提示信息
接收参数的实体的属性上还需要加校验的注解@NotEmpty(message="密码不能为空")
还可以使用正则表达式对属性进行校验。只需要加入以下注解即可:
@Pattern(
regexp = 正则表达式,
message = "输入格式不合法"
)
4.当后端接收完前端的数据,响应一般也是返回json数据给前端,此时只需要在后端控制器Contoller类加上@ResponseBody即可。该注解用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端。@Controller 与 @ResponseBody 结合使用返回json数据给前端,我们还可以使用@RestController替换他们,从而使代码更加的精简。