由于业务需要实现一个关注公众号登录的功能,需要从微信回调中获取到用户的关注信息,就去查了一下官方的文档
用户关注的时候会给我提供的回调地址发一条消息,消息内容有用户id、事件内容什么的,那实现起来也不难嘛
但是...拿body的时候,用了@Query、@Body、@Param,无论怎么拿,就是拿不到文档里提到的xml数据包,简直怀疑人生
于是我把拿到的请求参数直接全部打印出来,看看到底是个什么怪物,结果定眼一看,好家伙
这什么啊,什么啊,body为什么是个空对象啊?
你作为post请求的尊严呢?
吓得我赶紧往上翻了翻
为什么啊,为什么一个post请求的参数会出现在url上啊?
虽然有点怀疑人生,但需求还是要做的,即使他的参数是在url上,这些内容也不是我需要的xml信息
本着打破沙锅问到底也要完成任务的决心,继续上网查资料,最后在廖神的网站上找到了答案
这尼玛也太坑爹了吧,腾讯你能不能让开发者省点心啊,尊重一下开发规范好伐?
但是抱怨归抱怨,生活还是要继续,功能还是要开发,产品的刀已经架在脖子上了,不上也得上,最后在某位B姓大佬的博客上找到了答案。
其实解决办法操作起来很简单
首先
安装两个依赖
yarn add body-parser body-parser-xml
然后,把这两个神圣的依赖放进你的main.ts(格式是这样,就不写太详细了)
const bodyParser = require('body-parser');
require('body-parser-xml')(bodyParser);
app.use(
bodyParser.xml({
xmlParseOptions: {
explicitArray: false, // 始终返回数组。默认情况下只有数组元素数量大于 1 是才返回数组。\
},
}),
);
重启你的项目
问题解决了T.T
就这破玩意搞了我差不多一个下午
你学废了吗?