Swift 3.0 & Node.js 有关json解析的格式坑

坑了老子一下午的body拿不到 与 格式奇葩

结论: 两边都要进行格式的配置

客户端发请求,请求头的配置request.setValue("application/json", forHTTPHeaderField: "Content-Type" )

服务端路由或中间件的配置- 入参的时候 传一个 var jsonParser = bodyParser.json() 进去

具体历程如下

阶段一 :配置好了服务端的body-parser 然而解析结果奇葩

var bodyParser = require('body-parser'); 

var urlencodedParser = bodyParser.urlencoded({extended:true});

var jsonParser = bodyParser.json();

server.use(urlencodedParser); //中间件来一发 -----这里是错误原因之一, 文本内容格式设置了,但json内容就没设置,后面有讲

结果一:{你打算传的字典:""} (express服务这边得出大字典,你的请求体当作键,值却找不到,废话,本来就不是这个格式)

思考一:格式问题,那到底是传的时候格式不对,还是解析的时候他自己意淫

然后各种尝试,各种同性交友,有人说客户端那边请求头要设置


阶段二:修改客户端代码,设置请求头参数,结果还是undefined

熟悉的味道,听起来靠谱,oc的时候干过这事儿

//request.setValue("application/json", forHTTPHeaderField: "Accept");-某外国sb,关键的域不是accept

//request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")  -文本内容的 我主要要解决内容是json的

关键:request.setValue("application/json", forHTTPHeaderField: "Content-Type")

 然而还是不行。。。request.body 是 undefined

 what the sam hill。。。。

然而我想要放弃去投靠perfect时,最后的绝望尝试下,居然成功了

关键:server.post('/room/creat', jsonParser,function(request, response) {}

在设置路由的时候或者中间件的时候配一次:server.use(jsonParser); 

-变量声明看最前


相关坑:客户端请求体的json打包

系统自带的就够用,如下。

guard let  result = try?JSONSerialization.data(withJSONObject: testDic, options: JSONSerialization.WritingOptions.prettyPrinted) else {}

返回解析:

你非要与直接与你 封好的对象类型 相互可转,这个我没研究6⃣️ ,请各位指教。

如果你苦恼于类型any 的 强转,内容层次深的话,研究一下SwiftyJson 这个库。

时间有限,文章个人色彩重,见谅,有相关问题和坑我不吝赐教,也请各位多多指教。

你可能感兴趣的:(Swift 3.0 & Node.js 有关json解析的格式坑)