常用HTTP contentType與后端處理方式

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


前端export.json的請(qǐng)求

后端export.json的處理方式

對(duì)應(yīng)的后端的處理方式,如果是單個(gè)參數(shù)去獲取,那就用@RequestParam,如果是對(duì)應(yīng)Java Bean,那就不需要任何注解

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


前端list.json請(qǐng)求

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


后端list的處理

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

前端上傳

后端處理

2018-1-29下班總結(jié):

用get方式發(fā)送參數(shù),拼接在url后:
image.png

后端處理:


HttpServletRequest對(duì)象
從request中可以獲取,用@Requestparam也可以獲取
如果是Post請(qǐng)求:

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

image.png
后端post+@RequestBody的方式來(lái)做獲取,@RequestBody注解的字段獲取的為key=value格式的數(shù)據(jù),user對(duì)象也綁定了屬性值,所以u(píng)rlencoded的方式不需要后端特殊處理,springMVC會(huì)進(jìn)行綁定

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


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


后端接收的值

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


image.png

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

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


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

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


image.png

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

image.png
),也可以不加@RequestParam來(lái)獲取,獲取不到值的時(shí)候不報(bào)錯(cuò)。

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

image.png

后端需要用@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ù),返回給前端。


默認(rèn)賦值給加了@RequestBody的字段,接收到的是一個(gè)json數(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í),什么都不用加。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容