一、不使用@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是能夠的。