Один и тот же ответ об ошибке для всех сбоев с 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));
});
Другие вопросы по тегам