私は基本的に 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.response
、axios ドキュメントチェックするすべてのエラーケース。
また、axiosは4xxエラーをスローしません。これはAPIからの期待される有効な応答である可能性があるためです。この動作は設定によってカスタマイズできますvalidateStatus
。ドキュメント。