#angularjs
Вопрос:
Ниже приведен код
UserService.api.getProfile({userLogin: $scope.login}, function(res) {
_.each($scope.visibility, function(e) {
e.visible = (_.find(res, { 'roleName': e.name })) ? true : false;
});
});
А для UserService.api.getProfile будет таким, как показано ниже
angular.module('frontendApp').factory('UserService', [
'$resource',
function($resource) {
return {
api: $resource('service/authority-roles/:roleId', {}, {
getProfile: {
method: 'GET',
url: 'service/user/:userLogin/authority-roles',
isArray: true
}
Это хорошо работает, если API отправляет ответ 200. Однако, когда API возвращает ответ 404, код не может уловить состояние.
Я пытался использовать «Попробовать» и «Поймать», но это не работает. Я тоже утешал.войдите в res.status, чтобы получить код состояния, но значение не определено.
План состоит в том, что если API вернет 400 ответов, то предупредит сообщение «Пользователь не найден».
Ценю вашу помощь в этом. Заранее спасибо.
Комментарии:
1. Нам нужно увидеть реализацию
UserService.api.getProfile()
, прежде чем мы сможем сказать, но я предполагаю, что есть третий параметр, который принимает функцию обратного вызова сбоя.2. Привет @JacobStamm Я включил getProfile выше.
Ответ №1:
Предполагая, что у вас нет глобальных $http
перехватчиков, которые будут обрабатывать это, вы можете сделать это для каждого метода api, указав interceptor
объект в своем getProfile
действии, например:
getProfile: {
method: 'GET',
url: 'service/user/:userLogin/authority-roles',
isArray: true,
interceptor: {
responseError: function(rejection) {
// do something on error
return $q.reject(rejection);
}
}
}
Вы можете прочитать больше о перехватчиках здесь.
Комментарии:
1. Это работает!!! большое вам спасибо, это очень полезно. Разберемся дальше по перехватчикам