@requestbody---接受前端傳json對象並綁定javabean
@requestbody---接受前端傳json對象並綁定javabean----https://blog.csdn.net/ljxbbss/article/details/74452326
最近代碼遇見了一個springmvc中的小問題,算是很基礎的東西,同事問我後我有有些迷惑上網找了一些資料後弄清楚了。特此記錄一下
首先是後臺代碼使用springmvc註解@requestbody,前端采用了easyui結合angulajs,老大把前端代碼封裝了很多東西,其實我們都是表面做工,就只是停留在使用層面上,包括後端框架的環境配置上,之前也是自己搭項目適合拷貝了一個base框架,時間長了對配置裏面的具體內容都不是太了解了。
言歸正傳問題是這樣的:
1.前端做保存操作的時候提交了很多參數過來,老大封裝的同時把前端代碼提交的時候content-type改成了application/json,後臺也配置了一個針對spring4的son類型的httpmessageConverter,某次提交的時候加了@requestbody註解的時候參數獲取不上並且報參數400,400這個狀態碼我們很了解,是因為參數類型不對,後來才發現是因為同事後臺參數定義的實體bean比傳過來的參數少定義了一個參數導致報了400,這是第一個地方。
2.平時我在寫後臺代碼給前端app做接口的時候,其實並沒有太在意,有些我都是直接沒有用@requestbody這個註解,直接在入參的地方寫了參數bean,也是可以直接解析到的。
答案:經過一番百度,發現了原因。springmvc這個地方針對前端提交參數的時候,有幾種content-type的類型,這個地方請參考這篇文章 :http://blog.csdn.net/blueheart20/article/details/45174399
關鍵得是@requestBody註解常用來處理content-type不是默認的application/x-www-form-urlcoded編碼的內容,比如說:application/json或者是application/xml等。一般情況下來說常用其來處理application/json類型。並且@requestbody傳送的參數需要是son對象即可;
附:form默認的提交方式content-type是x-www-form-urlencoded,會將傳遞的參數轉換成key-value方式。
附帶著說一下使用postman方式設置content-type為application/json方式測試後臺接口
這個地方需要把要發送的參數寫成json對象的格式粘貼在raw下面,上面的路徑上就不用寫參數了。
更多的postman設置content-type參考:http://blog.csdn.net/qq_25730711/article/details/54707603。
@requestbody---接受前端傳json對象並綁定javabean