坑了老子一下午的body拿不到 與 格式奇葩
結(jié)論: 兩邊都要進(jìn)行格式的配置
客戶端發(fā)請(qǐng)求,請(qǐng)求頭的配置request.setValue("application/json", forHTTPHeaderField: "Content-Type" )
服務(wù)端路由或中間件的配置- 入?yún)⒌臅r(shí)候 傳一個(gè) var jsonParser = bodyParser.json() 進(jìn)去
具體歷程如下
階段一 :配置好了服務(wù)端的body-parser 然而解析結(jié)果奇葩
var bodyParser = require('body-parser');?
var urlencodedParser = bodyParser.urlencoded({extended:true});
var jsonParser = bodyParser.json();
server.use(urlencodedParser); //中間件來(lái)一發(fā) -----這里是錯(cuò)誤原因之一, 文本內(nèi)容格式設(shè)置了偎球,但json內(nèi)容就沒(méi)設(shè)置,后面有講
結(jié)果一:{你打算傳的字典:""} (express服務(wù)這邊得出大字典诡挂,你的請(qǐng)求體當(dāng)作鍵隶债,值卻找不到,廢話力惯,本來(lái)就不是這個(gè)格式)
思考一:格式問(wèn)題碗誉,那到底是傳的時(shí)候格式不對(duì),還是解析的時(shí)候他自己意淫
然后各種嘗試父晶,各種同性交友哮缺,有人說(shuō)客戶端那邊請(qǐng)求頭要設(shè)置
階段二:修改客戶端代碼,設(shè)置請(qǐng)求頭參數(shù)甲喝,結(jié)果還是undefined
熟悉的味道蝴蜓,聽(tīng)起來(lái)靠譜,oc的時(shí)候干過(guò)這事兒
//request.setValue("application/json", forHTTPHeaderField: "Accept");-某外國(guó)sb,關(guān)鍵的域不是accept
//request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") ?-文本內(nèi)容的 我主要要解決內(nèi)容是json的
關(guān)鍵:request.setValue("application/json", forHTTPHeaderField: "Content-Type")
?然而還是不行俺猿。茎匠。。request.body 是 undefined
?what the sam hill押袍。诵冒。。谊惭。
然而我想要放棄去投靠perfect時(shí)汽馋,最后的絕望嘗試下,居然成功了
關(guān)鍵:server.post('/room/creat', jsonParser,function(request, response) {}
在設(shè)置路由的時(shí)候或者中間件的時(shí)候配一次:server.use(jsonParser);?
-變量聲明看最前
相關(guān)坑:客戶端請(qǐng)求體的json打包
系統(tǒng)自帶的就夠用,如下圈盔。
guard let ?result = try豹芯?JSONSerialization.data(withJSONObject: testDic, options: JSONSerialization.WritingOptions.prettyPrinted) else {}
返回解析:
你非要與直接與你 封好的對(duì)象類型 相互可轉(zhuǎn),這個(gè)我沒(méi)研究6?? 驱敲,請(qǐng)各位指教铁蹈。
如果你苦惱于類型any 的 強(qiáng)轉(zhuǎn),內(nèi)容層次深的話众眨,研究一下SwiftyJson 這個(gè)庫(kù)握牧。
時(shí)間有限容诬,文章個(gè)人色彩重,見(jiàn)諒沿腰,有相關(guān)問(wèn)題和坑我不吝賜教览徒,也請(qǐng)各位多多指教。