NestJS で HttpService 呼び出しのエラーを再スローするにはどうすればいいですか? 質問する

NestJS で HttpService 呼び出しのエラーを再スローするにはどうすればいいですか? 質問する

私は基本的に NestJS を使用して、(監視可能なラップされた Axios ライブラリ) を使用して別の API へのリクエストをプロキシしていますHttpService。例:

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

呼び出しが成功した場合は正常に動作しますが、エラー (4xx) が発生した場合、ステータスとエラー メッセージを適切に返すにはどうすればよいでしょうか?

私は Promise を使用してそれを実行する方法を見つけましたが、可能であれば Observable 内にとどまりたいと思います。

ベストアンサー1

catchError対応するステータス コードで例外を再スローするには、次のように使用できます。

import { catchError } from 'rxjs/operators';

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

nullになる可能性があるのでerror.responseaxios ドキュメントチェックするすべてのエラーケース。

また、axiosは4xxエラーをスローしません。これはAPIからの期待される有効な応答である可能性があるためです。この動作は設定によってカスタマイズできますvalidateStatusドキュメント

おすすめ記事