2015-07-18 3 views
4

фонаКак поймать HTTP ответ ошибки в угловом

  • Моей Угловой приложение взаимодействует с базой данных с помощью набора API конечных точек.
  • «пользователь/аутентификация» конечных точек принимает имя пользователя и пароль и возвращает сообщение об успешном завершении (200) или отрицательном запросе (400).

Контроллер

authService.login(email, password) 
    .success(function (response) { 
     /* go to application */ 
    }) 
    .error(function (response) { 
     /* display proper error message */ 
    }); 

аутентификации Сервис

factory.login = function(email, password) { 
    return $http({ 
     method: 'POST', 
     url: "http://myserver/user/authenticate", 
     data: $.param({email: email, password: password}), 
     headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
    }); 
} 

Проблема

Когда имя пользователя и пароль не удается, и API возвращает 400 ответ, даже хотя я уловил ошибку, и я показываю правильное сообщение пользователю, ошибка появляется в консоли браузера.

POST http://myserver/user/authenticate 400 (Bad Request) 

Могу ли я обрабатывать ошибки в лучшем виде?

+1

Вы говорите, что «даже если я ловлю ошибку, и я отображая соответствующее сообщение для пользователя, ошибка появляется в браузера ".. так в чем проблема? Какая ошибка в консоли? Если вы сообщите об ошибке пользователю, то в чем проблема? – jakeed1

+0

Я не хочу, чтобы пользователь видел сообщение об ошибке в консоли. Есть ли способ предотвратить это? – user2364656

+0

Если сервер возвращает ответ об ошибке, его нет. Если пользователь подкован, они увидят это. У обычного пользователя не будет открытой консоли. Его до разработчика интерфейса для перевода ошибок сервера в читаемые/полезные сообщения пользователю. Ошибка 400 - это ошибка 400, ее нельзя скрыть. – jakeed1

ответ

3

Попробуйте

factory.login = function(email, password) { 
    return $http({ 
     method: 'POST', 
     url: "http://myserver/user/authenticate", 
     data: $.param({email: email, password: password}), 
     headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
    }).then(function (response) { 
     /**Check here your status code 400 if you found that status code is 400 the reject the promise**/ 
      if (statuscode !==400) { 
         return response.data; 
        } else { 
         // invalid response 
         return $q.reject(response.data); 
        } 

     }, function (response) { 
      // something went wrong 
      return $q.reject(response); 
     }); 
} 

, а затем использовать следующий код

authService.login(email, password) 
     .then(function (response) { 
      /* go to application */ 
     },function(error) { 
       console.log(error); /* catch 400 Error here */ 
    }); 
+0

На самом деле вы обрабатываете ошибку, как задается вопросом, вы все равно получите то же сообщение об ошибке, я использую тот же способ ur, но не помогаю. –

+0

есть ли ошибки ?? – Rahul

+1

Вы можете обработать ошибку, например, если плохой запрос показать сообщение пользователю с statusText, но все же вы получите сообщение об ошибке в консоли, 'POST http: // localhost: 8100/api/users 400 (Bad Request)' это для меня что если я попытаюсь опубликовать пользователя с тем же адресом электронной почты, в UI я обработаю его dshow, который пользователь уже существует, но в консоли я все равно получу это сообщение, вопросчику нужно пройтись по нему в консоли (что на самом деле невозможно). –

Смежные вопросы