Поймать глобальную ошибку из Express с Angular - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь отловить ошибку на стороне клиента, которая исходит от Express.Я использую пакет Rate Limiter для ограничения запросов по заданному маршруту.По сути, выдает ошибку 429 при достижении количества запросов.

const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 minutes
  max: 100 // limit each IP to 100 requests per windowMs
});

Поэтому я добавляю это промежуточное ПО в свой маршрут, но на стороне клиента, когда ошибка возникает в журналах,область ошибок Angular (ниже) не перехватывает его.

HttpClient

 public login(user): Observable<any> {
return this.http.post('/api/login');
}

Компонент

 this.auth.login(credentials).subscribe( 
    (success) => {if everything is fine},
    (error) => {catch the error message here of 429 error request}
    )

Как я могу перейти к его более глобальному, но все еще связанномув пределах определенной функции на HttpClient в Angular?

Заранее спасибо

1 Ответ

0 голосов
/ 03 апреля 2019

Хорошо, если я правильно понимаю ваш вопрос, вы можете попробовать использовать перехватчик http:

@Injectable()
export class ExampleInterceptor implements HttpInterceptor {

constructor() { }

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
  return next.handle(req.clone()).pipe(
    tap((event: HttpEvent<any>) => {
    // if everything is fine...
    }, (err: any) => {
      if (err instanceof HttpErrorResponse) {
        if (err.status === 429) {
            // if the relevant error is thrown...
        }
      }
    }))
 }
}

и загрузить этот перехватчик в провайдеры вашего модуля, например

 {
  provide: HTTP_INTERCEPTORS,
  useClass: ExampleInterceptor
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...