简化节点请求代码以调用刷新令牌

时间:2016-03-28 15:14:37

标签: javascript node.js express

假设在通过节点请求模块执行http请求时我有一个场景 1)对于每个API调用,如果访问令牌有效,则返回响应 2)如果Access令牌无效,请调用刷新令牌以获取新的访问令牌。如果要返回新的访问令牌,请再次回拨相同的api,否则将用户重定向到登录页面。

我的代码如下所示,但我觉得为每个api重复相同的步骤是多余的。有没有办法简化流程?我期待这样的结果作为最终结果:

最终期望代码:

    var callApiA = {
        ..
        ..
        shouldCallRefreshToken: true
    }
    request(callApiA, function(err, response, body) {
        if(response.statusCode === 200) {
            res.json(body);
        }
    });

当前代码:

request(callApiA, function(err, response, body) {
    if (response.statusCode === 200) {
        res.json(body);
    } else if (body.invalidToken) {
        if (refresh token still exist) {
            request(callRefreshToken, function(err, response, body) {
                if (response.statusCode === 200) {
                   request(callApiA, function(err, response, body) {
                        if(body.invalidToken) {
                            res.redirect('/login');
                        } else if (response.statusCode === 200) {
                            res.json(body);
                        } else {
                            res.json('unknown error');
                        }
                   });
                } else {
                   res.redirect('/');
                }
            });
        } else {
            res.redirect('/login');
        }
    } else {
        response.json('Unknown error');
    }
});

1 个答案:

答案 0 :(得分:0)

这样的东西可能会更清洁。

double