常用HTTP contentType與后端處理方式
1、Content-Type:application/x-www-form-urlencoded; charset=UTF-8


對應的后端的處理方式,如果是單個參數去獲取,那就用@RequestParam,如果是對應Java Bean,那就不需要任何注解
2、Content-Type:application/json;charset=UTF-8

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

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


2018-1-29下班總結:
用get方式發送參數,拼接在url后:

后端處理:


如果是Post請求:
1、前端傳遞的方式為:Body+application/x-www-form-urlencoded:


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

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

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

將后端的代碼改一下:

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

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

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

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

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

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