2014-06-13 12 views
15

W mojej aplikacji używam interfejsu API REST, aby uzyskać moje dane. Jeśli wysłać żądanie jak tenUnikanie kątów Śledzenie konsoli przy błędzie HTTP http

$http.get('api/entity/' + $scope.entityId).success(/* DO STUFF */).error(/* DO STUFF */) 

w serwisie, jeśli identyfikator podmiotu nie istnieje wrócę do 404. W funkcji błędu łapię go za pomocą status (drugi parametr) i działają na nią w właściwy sposób.

Denerwuje mnie to, że kątowe wrzuca wyjątek i zanieczyszcza konsolę javascript. Wydaje się, że dzieje się to na Angular.js: 8165

Czy istnieje sposób, aby powiedzieć kanciarzowi, że jestem dorosłym programistą i będę sobie radził w miły sposób z tym, co sam postrzega jako błąd?

Innymi słowy, czy mogę powiedzieć, kanciasty, aby nie produkować tych bzdur?

Dzięki,

+0

Czy jesteś pewien, że to AngularJS, a nie przeglądarka? Jestem pewien, że przeglądarka rejestruje każdy błąd HTTP. [Możesz użyć tego jako filtra w logowaniu konsoli.] (Http://stackoverflow.com/a/14427545) – Philipp

+0

Cóż, możesz mieć rację, jedyne co mam na myśli to, że mam to: http://postimg.org/image/g54vhjmrz/ –

Odpowiedz

15

Jest to funkcjonalność w przeglądarce, a nie częścią angularjs że robi rejestrowanie. Oto próbka z konsolą tej strony:

console sample

Widać rejestruje dokładnie ten sam komunikat o błędzie, jak połączone w komentarzu na pytanie, a jest rzeczywiście pointing to a part in the source code, ale nie dodawać żadnych rejestrowanie sprawozdania.

Najlepszą rzeczą, jaką możesz zrobić, to wykonać this answer i dodać filtr do konsoli.

+0

Geat, dzięki za odpowiedź! –

+0

To nie jest rozwiązanie, jeśli chcesz uniknąć zanieczyszczania konsoli wszystkim użytkownikom, a nie tylko sobie. Pytanie jest dobre. Chcę, aby serwer rzucił wyjątek w przypadku błędu i chcę, aby klient obsługiwał to bez zanieczyszczania konsoli. – Kesty

+0

Prawdą jest, że przeglądarka (Chrome i Opera w moim przypadku) zarejestruje "błąd sieci", możesz to ukryć, zaznaczając pole wyboru "Ukryj sieć" w filtrach konsoli. Jednakże, jak pierwotne pytanie stwierdza, błąd jest również rejestrowany przez AngularJS. Ja też chciałbym, żeby to się skończyło. –

1

Nie dodaję do tego realnego rozwiązania, ponieważ Philipp dostarczył prawidłową odpowiedź, ale chcę opublikować pomysł o o "obejściu".

Jeśli naprawdę chcesz tego uniknąć, rozwiązaniem jest po prostu uczynienie odpowiedzi wszystkich nieudanych jako obsłużonych odpowiedzi (np .: nieprawidłowe poświadczenia, e-mail istnieje, niepoprawna data rozpoczęcia, ... itd.), Więc wszystkie działają jako sukces, a status zwraca za 200, a możesz dodać w nagłówku odpowiedzi lub treści inną właściwość, taką jak secondaryStatusCode=400, a następnie w funkcji powodzenia z przodu, spróbuj ją przeczytać, na wypadek, gdyby nie była 200.

Wiem, że to brzydkie rozwiązanie, ale możesz go użyć, jeśli naprawdę potrzebujesz znaleźć obejście tego problemu.

+0

Dziękuję za odpowiedź, ale jak powiedziałeś, to bardziej obejście i budowany przeze mnie interfejs API musi pozostać "czysty", aby klienci mogli go używać bezpośrednio (bez interfejsu). –

+0

BTW Nie nazwałabym tego brzydko, służy Cel i widziałem ogromną ilość usług lub stron internetowych korzystających z tej techniki. Dla siebie wolę tego nie robić i starać się trzymać Reszty tak bardzo, jak tylko mogę ... –

+0

Tak więc jestem i myślę, że tak, wiele projektów używa tego "brzydkiego" rozwiązania, jeśli tak naprawdę jest. I wiem, że to może być zbyt późna odpowiedź, ale chcę tylko dodać to społeczności, która szuka odpowiedzi na tego rodzaju pytanie. –

Powiązane problemy