Hejto.pl
Dodaj post

Wpisz coś do wyszukania (minimum 2 znaki)

Wpis użytkownika Dapred w Programowanie

Kompan

w Programowanie

3piorunów

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

Komentarze (7)

Kompan4piorunów

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

Kompan3piorunów

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

Kompan0piorunów

@bzyku95 nie wiem czy dobrze łapie ale nie wchodzi mi w ogóle w catcherrora:
signInUser(parametry).pipe(
catchError(() => {
console.log('blad');
})
).subscribe((response) => {

i konsola milczy

Kompan2piorunów

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

Specjalista4piorunów

@Dapred nice try, panie Mihau Biauek