我正在为前端编写一个api,过程是,前端向后端发送一个字符串,在解码后端后将代码发送回去。
const router = require('koa-router')({
prefix: '/weapp'
});
router.post("/openid", async (req, res) => {
const Ut = require("../common/utils");
try {
let grant_type = 'authorization_code'
let appid = config.appId
let secret = config.appSecret
let code = req.accept.headers.accept
console.log('req code: ', code);
let opts = {
url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid + '&secret=' + secret + '&js_code=' + code + '&grant_type=' + grant_type
}
let r1 = await Ut.promiseReq(opts);
r1 = JSON.parse(r1);
console.log('r1 is:', r1);
openid = r1.openid
res.send(openid)
}
catch (e) {
console.log(e);
res.json('');
}
})
res.send(openid)
应该发送openid,但是我收到的是{code: -1, error: "res.json is not a function"}
。而且我看不到变量res
的定义是重载的。请帮帮我〜
答案 0 :(得分:1)
您的代码被捕获并运行res.json('')。尝试将其更改为res.json(null)或res.json({})
答案 1 :(得分:0)
问题解决了。
代码router.post("/openid", async (req, res) => {
使用Express Framework,而微信使用Koa2框架,因此async()
中的参数有些不同。
在Koa2中,我们应该写router.post("/openid", async (ctx, next) => {
。在这种情况下,ctx.response和ctx.request分别表示express中的res和req。