【Node.js】aspida/fetchでエラーを投げさせ、レスポンスメッセージも取得する
こんにちは、フリーランスエンジニアの太田雅昭です。
aspida/fetch
aspidaは、TypeScriptで使えるapiクライアントです。
axiosとfetchのどちらでも使えます。@aspida/fetch, @aspida/axiosのどちらかをインストールするだけです。
aspida/fetchのエラー動作
aspida/fetchは、デフォルトではリクエストに失敗してもエラーを投げません。これはfetchがエラーを投げないことに由来しています。
そこでエラーを投げさせるには、初期化時に以下のようにパラメータを渡します。
import fetchClient from "@aspida/fetch"
import api from "./generated/$api"
export const apiClient = api(fetchClient(
fetch,
{
...
throwHttpErrors: true,
}
));
これでエラー時にthrowされるようになります。
ところがaspida/axiosならレスポンスメッセージもエラー内容に含まれるのですが、aspida/fetchだとメッセージは含まれません。
aspida/fetchで、エラー時にレスポンスメッセージを取得する
以下のようにすれば、エラーメッセージも取得できます。
...
} catch (e: any) {
console.error(await e.response.json());
}
エラーオブジェクトから直接responseを取得する形ですね。ここからメッセージも取得できます。
小話
明日の最高気温は14度だそうで、少し暖かくなりそうです。よかったー。