#angularjs #restangular
#angularjs #restangular
Вопрос:
API, с которым я работаю, возвращает 200 со строковым сообщением об ошибке, когда клиент не аутентифицирован. Так что, если я вызову:
var restSvc = Restangular.service('message');
var deferred = restSvc.getList()
при аутентификации я получаю обратно массив объектов — но если я вызываю его, когда он не аутентифицирован, я получаю обратно строку «Вызывающий не может быть аутентифицирован».
Проблема в том, что я не могу обработать эту ошибку, потому что Restangular выдает ошибку и не разрешает или не завершает отложенный, потому что он ожидает массив:
Error: Response for getList SHOULD be an array and not an object or something else
Как я могу обработать эту ошибку и получить ответ, даже если это не массив?
Ответ №1:
Одна вещь, которую вы можете сделать, это добавить перехватчик ответов для проверки данных перед их возвратом. Если он соответствует определенному формату, прикрепите его к данным ответа. Например.
restangularConfig.addResponseInterceptor(function(response, operation) {
if (operation === 'getList') {
// Test your data structure here.
}
return response;
});
Если это ваш собственный API, который вы разрабатываете, я бы настоятельно рекомендовал изменить формат, чтобы он соответствовал каждому запросу. Например.
Если запрос удовлетворительный.
{
"status": 200,
"content": [{},{}...]
}
Если запрос плохой.
{
"status": 401, //or what ever error
"content": []
}