GOOGLE ADS

пятница, 29 апреля 2022 г.

Angular, HttpClient, подписка не отлавливает ошибку при 401

У меня что-то странное с моим кодом. У меня есть это в моем сервисе, очень простое, простое получение httpClient... Когда API возвращается как статус 401, я ожидаю, что он переходит в ошибку... Но это не так. В моей консоли у меня есть только «полный». Когда API возвращает статус 200, он преуспевает в «следующем» Any Idea?

import { HttpClient } from '@angular/common/http';
...
constructor(
private httpClient: HttpClient,
private configService: ConfigService
) {}
getUserDetails() {
console.log('AuthService.getUserDetails');
return this.httpClient
.get<UserDetails>(this.configService.getModuleCoreAPi('users.details'))
.subscribe({
next: (ud) => {
console.log('next', ud);
this.userInfos.next(ud);
},
error: (error) => {
console.log('error', error);
},
complete: () => console.log('complete'),
});
}
...

ОБНОВЛЕНИЕ 1: это тоже не работает

 getUserDetails() {
console.log('AuthService.getUserDetails');
this.httpClient
.get<UserDetails>(this.configService.getModuleCoreAPi('users.details'))
.pipe(
catchError((err) => {
throw 'error in source. Details: ' + err;
})
)
.subscribe(
(ud) => {
console.log('next', ud);
this.userInfos.next(ud);
},
(error) => {
console.log(error);
}
);
}

ни

 getUserDetails() {
console.log('AuthService.getUserDetails');
this.httpClient
.get<UserDetails>(this.configService.getModuleCoreAPi('users.details'))
.pipe(
catchError(err => {
throw 'error in source. Details: ' + err;
})
)
.subscribe({
next: (ud) => {
console.log('next', ud);
this.userInfos.next(ud);
},
error: (err) => console.log(err),
});
}

Обновление 2. Если я заставлю API возвращать код состояния 500, он, как и ожидалось, переходит в ошибку


Решение проблемы

Я обычно использую для этого rxjs catchError().

this.httpClient
.get<UserDetails>(this.configService.getModuleCoreAPi('users.details'))
.pipe(catchError((error) => console.log(error))
.subscribe((ud) => this.userInfos.next(ud));

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...