產(chǎn)投集團(tuán)APP-智慧黨建系統(tǒng)
1矮嫉、會(huì)議創(chuàng)建會(huì)議數(shù)據(jù)提交業(yè)務(wù)對(duì)接
學(xué)習(xí)
1、JS變量作用域提升
2屎篱、HTTP協(xié)議之Content-type
經(jīng)常使用的Content-type有三種:application/x-www-form-urlencoded | application/json | multipart/form-data
是因?yàn)槲也恢挂淮斡龅揭粋€(gè)問題:前端傳了參數(shù)(瀏覽器里面可以看見是傳了的)肝劲,但是后端沒有接收到。一開始我用axios和寫go的后端遇到過担敌,后來我用vue-resource和寫java的后端又遇到了摔敛。奇怪的是我用原生的ajax來請(qǐng)求又沒了問題。后來在使用postman來測試的時(shí)候全封,發(fā)現(xiàn)好像他們的Content-type有一些區(qū)別马昙,大概知道了原因桃犬,但是因?yàn)閼幸矝]有去深究,但是最近我同事又遇到了行楞,又讓我勤快了一些
經(jīng)常使用的Content-type有三種:application/x-www-form-urlencoded | application/json | multipart/form-data
先通過瀏覽器來看看他們傳輸數(shù)據(jù)時(shí)候的樣子
application/x-www-form-urlencoded 如圖:
application/json 如圖:
比較這兩個(gè)地方可以發(fā)現(xiàn)他們傳輸數(shù)據(jù)的方式是不同的攒暇。前者是使用 urlencoded 的方式,也就是 'msg=send&id=1'子房;
后者是使用json格式形用,直接是json字符串,也就是JSON.stringify({msg: "send json"});
//urlencoded格式
xmlHttp.send(``'msg=send&id=1'``)
//json格式
xmlHttp.send(JSON.stringify({msg: ``"send json"``}));
通過form表單不設(shè)置enctype屬性提交的時(shí)候池颈,默認(rèn)就是****application/x-www-form-urlencoded** 尾序。**
之所以,瀏覽器看見前端傳了數(shù)據(jù)后端接受不到躯砰;主要原因是前后端沒有約定好數(shù)據(jù)的格式,或者是忽略掉了携丁。我之前遇到的問題出現(xiàn)的原因是:使用的axios和vue-resoure傳的是json字符串給后端琢歇,但是后端又是用的 urlencoded 格式來接收的。所以出現(xiàn)了使用axios請(qǐng)求不行梦鉴,但是自己寫了個(gè)原生的ajax也可以正常訪問李茫。
以node為例:
app.use(bodyParser.json()); ``// for parsing application/json
app.use(bodyParser.urlencoded({ extended: ``true
})); ``// for parsing application/x-www-form-urlencoded
它針對(duì)于web頁面上傳過來的 不同content-type 的數(shù)據(jù)都作出了相應(yīng)的處理,否則是接收不到數(shù)據(jù)的肥橙。(其他語言又不同的處理方式魄宏。。存筏。宠互。嗯。椭坚。具體怎么我就不太清楚了)
總之予跌,最好事先溝通好這個(gè)部分(雖然一般情況都是不會(huì)出問題的,因?yàn)榍岸丝梢酝ㄟ^設(shè)置Content-type來調(diào)整)善茎,這樣嚴(yán)謹(jǐn)一些券册。
最后、multipart/form-data:
用來上傳文件垂涯,可以將文件以“流”的形式傳給后端烁焙,后端通過流去接收。
如圖: