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


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

對(duì)應(yīng)的后端處理方式,設(shè)置@RequestBody

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


2018-1-29下班總結(jié):
用get方式發(fā)送參數(shù),拼接在url后:

后端處理:


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


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

后端接收到j(luò)son字符串,用阿里fastjson解析:

3、接著上一步的后端代碼,如果前端改成form-data 的方式傳遞,則報(bào)錯(cuò):

將后端的代碼改一下:

2、2如果前端是body+x-www-form-urlencoded方式傳參,后端在解析字符串時(shí)報(bào)錯(cuò):

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

如果是POST+x-www.form-urlencoded的方式,可以加@RequestParam注解來(lái)獲?。ㄈ绻粋?,則報(bào)錯(cuò):

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

后端需要用@RequestBody注解標(biāo)識(shí)字段,@RequestBody的作用是接收Http請(qǐng)求中參數(shù),調(diào)用HttpMessageConverter接口轉(zhuǎn)化為json或xml數(shù)據(jù)并綁定到對(duì)象上。同理,@ResponseBody也是調(diào)用HttpMessageConverter接口將數(shù)據(jù)轉(zhuǎn)換成json或xml格式的數(shù)據(jù),返回給前端。

最終的結(jié)論:
json格式的數(shù)據(jù)用@RequestBody注解讓HttpMessageConverter轉(zhuǎn)換成json數(shù)據(jù)綁定到對(duì)象上;
urlencoded或者form-data一般都用@RequestParam注解來(lái)標(biāo)注(算是個(gè)規(guī)范吧,不加也可以),當(dāng)是自己封裝的實(shí)體對(duì)象時(shí),什么都不用加。