• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Angular http błędy

Object Storage Arubacloud
0 głosów
107 wizyt
pytanie zadane 8 stycznia 2021 w JavaScript przez michal_php Stary wyjadacz (13,700 p.)
zamknięte 8 stycznia 2021 przez ScriptyChris

Cześć.

Mam problem z pobraniem informacji w ciele odpowiedzi z serwera z kodem 400.

Component:

error => {
        console.log(error.body); // undefined
        console.log(error); // Bad Request
      }

Service http:

observe: 'events'

Za każdym razem wywala mi tylko Bad Request a nie wiem jak się dobrać do tego jaki message walidacji wywala mi serwer z góry dziękuje za wskazówkę.

komentarz zamknięcia: Problem rozwiązany w komentarzach
1
komentarz 8 stycznia 2021 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)
a czemu tego szukasz na fronendzie a nie na backendzie?
komentarz 8 stycznia 2021 przez michal_php Stary wyjadacz (13,700 p.)

Bo back-end wysyła mi ładną wiadomość. Jak wejdę na przykład w Networkingu na dane zapytanie to widzę odpowiedź od niego w stylu:

"incorrect_token"

Ale nie wiem jak się do tego dobrać.

Posiadam też ogólny plik: 

export class ErrorInterceptor implements HttpInterceptor 

I w nim jak zrobię sobie consol.loga to widzę już widzę ciało.

1
komentarz 8 stycznia 2021 przez Tomek Sochacki Ekspert (227,510 p.)
a co robisz w tym ErrorInterceptor, bo moze po prostu wycinasz tam świadomie część obiektu błędu? i czym jest to "console.log(error); // Bad Request", co dokladnie siedzi w zmiennej error?
komentarz 8 stycznia 2021 przez michal_php Stary wyjadacz (13,700 p.)

a co robisz w tym ErrorInterceptor

To jest klasa, której sprawdzam ciągle nagłówki czy serwer nie zwrócił mi 401 wygląda tak:

export class ErrorInterceptor implements HttpInterceptor {

  constructor(private authenticationService: AuthenticationServiceService) {}

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    return next.handle(req).pipe(catchError(err => {

      if (err.status === 401) {
        this.authenticationService.logout();
        location.reload(true);
      }

      const error = err.error.message || err.statusText;
      return throwError(error);
    }));
  }
}

  czym jest to "console.log(error); // Bad Request

error to jest odpowiedź z mojego componetu wysyłającego tokeny.

error po wy konsolowaniu posiada tylko  Bad Request. Ale w ciele odpowiedzi widać, że posiada jeszcze body -> message i masę innych informacji.

2
komentarz 8 stycznia 2021 przez Tomek Sochacki Ekspert (227,510 p.)

no ok, ale tutaj widać:

const error = err.error.message || err.statusText;
      return throwError(error);

że w przypadku błędu (który łapiesz przez catchError) zwracasz jako error nie jakiś obiekt, tylko po prostu stringa, prawdopodobnie tutaj pole message albo statusText to po prostu string "Bad Request" i zgodnie z oczekiwaniami taka wartość leci dalej do komponentu/serwisu itp., miejsca, gdzie obsługujesz ten endpoint. Dlaczego świadomie przerzucasz dalej tylko stringa w zmiennej error?

1
komentarz 8 stycznia 2021 przez Tomek Sochacki Ekspert (227,510 p.)
Spróbuj przerzucać tutaj dalej po prostu cały error i zobacz co wtedy masz w serwisie/komponencie
komentarz 8 stycznia 2021 przez michal_php Stary wyjadacz (13,700 p.)

Racja moje niedopatrzenie zapomniałem, że tam przecież ucinam wszystko na tej klasie ErrorInterceptor.

Dziękuje za pomoc.

Aż chciało by się powiedzieć wiszę piwo laugh 

1
komentarz 8 stycznia 2021 przez Tomek Sochacki Ekspert (227,510 p.)
spoko :) czasem warto dać kod do zobaczenia komuś w boku, ile to już razy człowiek czytał kod nie widząc błędów, a ktoś z boku w 5 sekund znajduje przyczynę, i uwierz mi, że dotyczy to tak juniora jak i czasem seniorów :) szczególnie, gdy czasami nawet error logi są nie do końca jasno wskazujące na problem...

a tak na marginesie to też kiedyś naciąłem się na problem w interceptorze angulara, który był napisany wieki temu przy pierwszym tworzeniu apki, chodziło tam o drobny corner case io rozwiązanie "na chwilę"... i dopiero po długiej chwili w ogóle zorientowałem się, że ten interceptor jeszcze w ogóle istnieje, choć dawno nie powinien :)

Podobne pytania

0 głosów
1 odpowiedź 126 wizyt
pytanie zadane 23 kwietnia 2021 w JavaScript przez Mitop Użytkownik (700 p.)
+1 głos
2 odpowiedzi 205 wizyt
pytanie zadane 3 kwietnia 2021 w JavaScript przez Jakub 0 Pasjonat (23,120 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...