Один и тот же ответ об ошибке для всех сбоев с request.js
Я использую request.js для node.js.
Мне было интересно, что будет лучшим способом вернуть ту же ошибку для всех неудачных ответов.
Прямо сейчас я возвращаю следующий объект json для всех сбоев:
res.json({success: false, message: 'An error has occurred'});
Но я делаю это по запросу, в каждом звонке. Как следующее:
request.post({
uri: res.locals.baseUrl + 'myAction',
qs: params
}, function (error, response, body) {
if (error || response.statusCode != 200) {
res.json({success: false, message: 'An error has occurred'});
}else{
var data = JSON.parse(body);
res.json(data);
}
});
Как я могу справиться с этим только в одном месте? Предоставляет ли запрос способ сделать это? Или я должен пойти на что-то вроде:
var failResponse ={success: false, message: 'An error has occurred'};
И затем, используя это в каждом запросе:
res.json(failResponse);
1 ответ
Будет ли что-то подобное для вас?
function sendResp(error, response, body, callback) {
if (error || response.statusCode != 200) {
// Error occurred
return callback(true, {
success: false,
message: 'An error has occurred'
})
}
// No errors, just send the body
callback(null, JSON.parse(body))
}
request.post({
uri: res.locals.baseUrl + 'myAction',
qs: params
}, function(error, response, body) {
sendResp(error, response, body, function(error, msg){
// If an error occured, return an error
if(error) return res.json(msg)
// Otherwise, display the response body
res.json(msg)
})
});
Или, следуя собственному предложению (с небольшой очисткой), вы можете сделать следующее:
var failResponse = {
success: false,
message: 'An error has occurred'
};
request.post({
uri: res.locals.baseUrl + 'myAction',
qs: params
}, function(error, response, body) {
// If there is an error, show it
if (error || response.statusCode != 200) return res.json(failResponse);
// No error, show response body
res.json(JSON.parse(body));
});