一、不使用@RequestBody,每一个属性对应一个参数,参数在请求的url中,利用Swagger测试的时候,传递几个参数,几个参数就会跟在url后面html
@RequestMapping("insert") public String insert(Ge06DTO ge06DTO){ return ge06Service.save(ge06DTO); }
二、使用@RequestBody,一个实体对应一个参数,参数不在请求的URL中json
@RequestMapping("insert") public String insert(@RequestBody Ge06DTO ge06DTO){ return ge06Service.save(ge06DTO); }
三、@RequestBodyapp
做用:(1)、该注解读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,而后把相应的数据绑定到要返回的对象上;测试
原理:处理HttpEntity传递过来的数据,通常用来处理非Content-Type:application/x-www-form-urlencoded编码格式编码
a、GET请i去中,由于没有HttpEntity,因此@RequestBody并不适用。url
b、POST请求中,经过HttpEntity传递的参数,必需要在请求头中声明数据的类型ContentType,SpringMVHandlerAdapter配置的HttpMessageConverters来解析HttpEntity中的数据,而后绑定到相应的bean.net
(2)、再把HttpMessageConvert返回的对象绑定到controller中的方法的参数上。code
ResponseBodyorm
做用:该注解用于将Controller的方法返回的对象,经过适当的HttpMessageConverter转换为指定的格式后,写入到Response对象的body数据区。xml
使用时机:返回的数据不是html标签的页面,二十其余某种格式的数据时(如json、xml等)使用
参考:
https://blog.csdn.net/walkerJong/article/details/7520896 @RequestBody, @ResponseBody
总结:
一、在GET请求中,不能使用@RequestBody.
二、在POST请求,可使用@Request和RequestParam,可是若是使用@RequstBody,对于参数转化的配置必须统一,
例如:在SpringMVC配置了HttpMessageConverters处理栈中,指定json转化的格式,如Date转成‘yyyy-MM-dd’,则参数类型接受对象包含的字段若是是Date类型,就只能让客户端传递年月日的额格式,不能传递时分秒。由于不一样的接口,他的参数可能对时间参数有不一样的格式要求,扩展行不高。
若是使用@RequestParam来接受参数,能够在接受参数的model中设置@DateFormat指定所须要的接受时间参数的格式。另外,使用@RequestBody接受的参数是不会被Servlet转化统一放在request对象的Param参数集中,而RequestParam是能够的。