常用HTTP contentType與后端處理方式


常用HTTP contentType與后端處理方式

 

1、Content-Type:application/x-www-form-urlencoded; charset=UTF-8


前端export.json的請求

后端export.json的處理方式

對應的后端的處理方式,如果是單個參數去獲取,那就用@RequestParam,如果是對應Java Bean,那就不需要任何注解

2、Content-Type:application/json;charset=UTF-8


前端list.json請求

對應的后端處理方式,設置@RequestBody


后端list的處理

3、Content-Type:multipart/form-data;

前端上傳

后端處理

2018-1-29下班總結:

用get方式發送參數,拼接在url后:
image.png

后端處理:


HttpServletRequest對象
從request中可以獲取,用@Requestparam也可以獲取
如果是Post請求:

1、前端傳遞的方式為:Body+application/x-www-form-urlencoded:

image.png
后端post+@RequestBody的方式來做獲取,@RequestBody注解的字段獲取的為key=value格式的數據,user對象也綁定了屬性值,所以urlencoded的方式不需要后端特殊處理,springMVC會進行綁定

2、如果前端改成以json字符串的形式傳遞參數:


后端接收到json字符串,用阿里fastjson解析:


后端接收的值

3、接着上一步的后端代碼,如果前端改成form-data 的方式傳遞,則報錯:


image.png

將后端的代碼改一下:
加了@RequestParam、不加注解的字段、不加注解的User對象都綁定了參數值

2、2如果前端是body+x-www-form-urlencoded方式傳參,后端在解析字符串時報錯:


接收到的字符串為 json: id=tery007

到這里,我們小小總結一下:
如果是POST+form-data的方式:
不需要做任何處理,直接用對象接收即可(不管有多少個對象):


image.png

如果是POST+x-www.form-urlencoded的方式,可以加@RequestParam注解來獲取(如果不傳,則報錯:

image.png
),也可以不加@RequestParam來獲取,獲取不到值的時候不報錯。

如果是POSt+json格式傳遞(瀏覽器為Request Payload,postman為raw格式)的方式:

image.png

后端需要用@RequestBody注解標識字段,@RequestBody的作用是接收Http請求中參數,調用HttpMessageConverter接口轉化為json或xml數據並綁定到對象上。同理,@ResponseBody也是調用HttpMessageConverter接口將數據轉換成json或xml格式的數據,返回給前端。


默認賦值給加了@RequestBody的字段,接收到的是一個json數據

最終的結論:
json格式的數據用@RequestBody注解讓HttpMessageConverter轉換成json數據綁定到對象上;
urlencoded或者form-data一般都用@RequestParam注解來標注(算是個規范吧,不加也可以),當是自己封裝的實體對象時,什么都不用加。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM