Как отбросить ошибки вызова HttpService с NestJS? - PullRequest
1 голос
/ 10 апреля 2019

Я использую NestJS для передачи запроса другому API, используя HttpService (наблюдаемую упакованную библиотеку Axios).Например:

return this.httpService.post(...)
  .pipe(
    map(response => response.data),
  );

Это работает правильно, когда вызов успешен;однако, если есть ошибка (4xx), как мне правильно вернуть статус и сообщение об ошибке?

Я понял, как сделать это с обещаниями, но если возможно, я бы хотел остаться в рамках наблюдаемого.

1 Ответ

1 голос
/ 10 апреля 2019

Вы можете использовать catchError, чтобы повторно вызвать исключение с соответствующим кодом состояния:

import { catchError } from 'rxjs/operators';

this.httpService.get(url)
      .pipe(
        catchError(e => {
          throw new HttpException(e.response.data, e.response.status);
        }),
      );

Обратите внимание, что error.response может быть нулевым, см. Документы axios , чтобы узнать обо всех случаях ошибок.

...