Jak poprawnie parsować response z http post w angularze? Case mam taki, że wysyłam requesta na endpointa(logowane) i mi zwraca albo sam token albo status code 401. I tutaj mam problem bo jak zwraca token to spoko zapisuje sobie w sesji itp ale jak zwraca 401 to w formacie
StatusCode: 401, ReasonPhrase: 'Unauthorized', Version: 1.1, Content: <null>, Headers:
{
}
I teoretycznie też zapisuje to jako token, chociaż nie jest tokenem bo sprawdzam czy po prostu jest jakaś odp xD
Mogę się jakoś dobrać do nagłówków aby status code wyciągnąć czy po prostu na sztywno dać warunek czy istnieje tekst "StatusCode" w response? Nie wiem jak inaczej to zweryfikować a moje rozwiązanie jest delikatnie ujmując brzydkie.
A to jak wysyłam:
signInUser(user: UserLogin){
    return this.http.post(AppSettings.API_URL + CONTROLLER + 'login', user, {responseType: 'text'});
  }
Tajemnicą chyba nie bedzie, że dopiero ucze się więc wyrozumiałości xD
#programowanie #angular
p3sman

@Dapred nice try, panie Mihau Biauek

bzyku95

Nie wiem jaki macie tam kontrakt, ale jeżeli używacie RESTa, to sprawdzenie status code odpowiedzi http jest rozwiązaniem 'by the book', przy 200 powinien być token w response, przy 401 wrócić do logowania


Angular chyba sam failuje promisa jak status code jest 4xx albo 5xx, wtedy można to złapać catchem i sprawdzić, albo użyć http interceptora żeby nie musieć tego robić przy każdym jednym strzale do API


Jeszcze można chyba użyć {"observe": "response"} w opcjach requesta, i potem w subscribe czy pipe będziesz miał cały response, a nie tylko response body, gdzie możesz sprawdzić status, jeśli dobrze pamiętam bo w angularze robiłem ostatnio 2 lata temu

Dapred

@bzyku95 nie wiem czy dobrze łapie ale nie wchodzi mi w ogóle w catcherrora:

signInUser(parametry).pipe(

  catchError(() => { <br />

    console.log('blad');<br />

   })<br />

).subscribe((response) => {<br />

i konsola milczy

bzyku95

@Dapred wejdź w zakładkę network w przeglądarce, jaki http status ma response w przypadku błędu przy logowaniu?

Dapred

@bzyku95 200 XD no to by wiele tłumaczyło. Królu złoty dzięki wielkie za naprowadzenie

bzyku95

@Dapred spoko, powodzenia

Zaloguj się aby komentować