javascript - NestJSでHttpServiceの呼び出しのエラーを再スローする方法は?
私はNestJSを使用して、基本的にリクエストを別のAPIにプロキシするためにHttpService(ObservableでラップされたAxiosライブラリ)を使用しています。例としては次の通りです:
return this.httpService.post(...)
.pipe(
map(response => response.data),
);
これは呼び出しが成功した場合に正しく機能します。しかし、エラー(4xx)が発生した場合、ステータスとエラーメッセージを正しく返すにはどうすればよいですか?
私はそれをプロミスで行う方法を見つけましたが、可能であればオブザーバブルの範囲内でやりたいです。
回答 #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 のドキュメントを参照して確認してください。
また、Axiosは4xxエラーに対して例外を投げません。なぜなら、それらはAPIからの期待される有効なレスポンスである場合があるからです。この動作はvalidateStatusを設定することでカスタマイズできます。詳細はドキュメントを参照してください。
