0
ノードリクエストモジュール経由でhttpリクエストを行うとき、以下のシナリオがあるとします。
1)API呼び出しごとに、アクセストークンが有効な場合は、応答を返します。
2)アクセストークンが有効でない場合は、リフレッシュトークンを呼び出して新しいアクセストークンを取得します。新しいアクセストークンが返されている場合は、同じ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');
}
});
ノードの非同期要求を簡素化し、約束を使用して見たい場合は、必要に応じて依頼を使用することができます。https://www.npmjs.com/package/request -約束する – JordanHendrix