如何用NestJS重新抛出HttpService调用的错误?

问题描述 投票:0回答:1

我使用NestJS基本上使用HttpService(一个可观察包装的Axios库)将请求代理到另一个api。例如:

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

当呼叫成功时,这可以正常工作;但是,如果出现错误(4xx),如何正确返回状态和错误消息?

我已经想出如何用承诺做到这一点,但如果可能的话,我想留在一个可观察的范围内。

javascript typescript observable axios nestjs
1个回答
1
投票

您可以使用catchError使用相应的状态代码重新抛出异常:

import { catchError } from 'rxjs/operators';

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

请注意,error.response可能为null,请参阅axios docs以查看要检查的所有错误情况。

© www.soinside.com 2019 - 2024. All rights reserved.