में एक ही अनुरोध को फिर से कॉल करना मैं ओएथ 2 एक्सेस टोकन द्वारा संरक्षित एक अलग API सर्वर पर प्रॉक्सी अनुरोधों के लिए एक्सप्रेस का उपयोग कर रहा हूं। जब टोकन समाप्त हो जाता है, तो सर्वर अब 401 लौटाएगा जो अब मैं अपने राउटर मिडलवेयर में संभालने के लिए क्लाइंट सत्र से जुड़े एक्सेस टोकन को रीफ्रेश कर सकता हूं (मैं express-session
का उपयोग कर रहा हूं)।नोड एक्सप्रेस
यहाँ मेरी कोड है:
router.js
app.use('/api', require('./routes.js'));
routes.js
var express = require('express'),
router = express.Router(),
routesController = require('./routes.controller.js');
router.route('/*')
.get(routesController.fetch);
routes.controller.js
module.exports.fetch = function(req, res, next) {
var options = helpers.buildAPIRequestOptions(req);
request(options, function(err, response, body){
if(response.statusCode === 401) {
authController.refreshToken(req, res, next);
} else {
res.status(response.statusCode).send(body);
}
});
};
authController
module.exports.refreshToken = function(req, res, next) {
var formData = {
grant_type: 'refresh_token',
refresh_token: req.session.refreshToken,
scope: 'PRODUCTION'
},
headers = {
'Authorization' : 'Basic ' + consts.CLIENT_KEY_SECRET_BASE64_DEV
};
request.post({url:consts.ACCESS_TOKEN_REQUEST_URL_DEV, form:formData, headers: headers, rejectUnauthorized: false}, function(err, response, body){
var responseBody = JSON.parse(body);
if (response.statusCode === 200) {
req.session.accessToken = responseBody.access_token;
req.session.refreshToken = responseBody.refresh_token;
next();
//How to recall the original request made from fetch controller function after this point?
} else {
console.log('SOMETHING ELSE HAPPENED!');
}
});
};
टोकन अद्यतन करने के बाद, मैं दोबारा जारी करने के मूल एपीआई अनुरोध है कि मैं अपने लाने नियंत्रक में request
मॉड्यूल का उपयोग कर ट्रिगर कर रहा हूँ चाहते हैं।
मैं थोड़ा सा स्टंप हूं कि मैं वास्तव में ऐसा करने के बारे में कैसे जाता हूं, क्या यह हासिल करने का एक शानदार तरीका है?