egg.js 中使用curl会请求两次

新手上路,请多包涵

问题描述

在egg中通过用户的code请求微信接口拿到openid,我发现第一次已经拿到,但是它执行了两次,所以ctx.body 直接打印了 第二次的结果, code已被使用。 如何修改只请求一次?

问题出现的环境背景及自己尝试过哪些方法

我尝试过使用 ctx.throw("500","xxxxx") 抛出错误,可以解决打印的问题(但它还是请求了两次),而且它不能设置200

相关代码

class User extends Controller {
    async login() {
        const ctx = this.ctx;
        const result = await ctx.curl(
            `https://api.weixin.qq.com/sns/jscode2session?appid=${
                this.app.config.appid
            }&secret=${this.app.config.secret}&js_code=${
                ctx.query.code
            }&grant_type=authorization_code`,
            {
                method: "GET",
                dataType: "json",
                headers: this.app.config.headers
            }
        )
        console.log(result.data)
        const openid = result.data.openid
        if (openid) {
            ctx.body = {
                openid
            }
        } else {
            ctx.throw(500, '获取openid失败');
        }
    }
}

你期待的结果是什么?实际看到的错误信息又是什么?

只请求一次。

阅读 4.6k
1 个回答
✓ 已被采纳新手上路,请多包涵

在判断后 return 即可

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题