fetchとaxios
フロントエンドからバックエンドAPIにアクセスする方法はいくつか存在する。今回はReactに限った話ではないが、代表的な手法であるfetchとaxiosについてまとめておく。
共通な部分
- 非同期通信を可能にする。
- Ajaxの実装である。
- Promiseを返却する。
fetch
メリット・デメリット
- コードが長くなりがち。
- レスポンスが HTTP 404 や 500 を返す HTTP エラーステータスの場合でも拒否されない。拒否されるのは、ネットワーク障害の場合や何かがリクエストの完了を妨げた場合のみ。
- fetch() が成功したかどうかを正確に判定するには、プロミスが解決された後でResponse.ok プロパティが true になっているかを確認する。
その他
- javascriptの標準API。
- fetchは init オプションで資格情報を設定しない限り、オリジンをまたぐクッキーを送信しない。
- Fetch Requestは受け取るリソースからの指示ではなく、CSPの
connect-src
ディレクティブによって制御される。 - 認証情報付きRequestを送るようにするには、
credentials: 'include'
を init オブジェクトに追加して fetch() メソッドに渡す。
axios
メリット・デメリット
- npmなどでinstallとimportが必要。
- 各種http request methodに対応したメソッドが存在する。
まとめ
- 個人的にはfetchよりはaxiosが直感的だと思う。
- axiosをimportできる場合は使ったほうが楽。
References
- Mozilla:Fetch API、mdn web docs、MDN (オンライン)、入手先<https://developer.mozilla.org/ja/docs/Web/API/Fetch_API> (参照2022-08-29).
- Mozilla:Fetch の使用、mdn web docs、MDN (オンライン)、入手先<https://developer.mozilla.org/ja/docs/Web/API/Fetch_API/Using_Fetch> (参照2022-08-29).
- Axios Contributors:axios/axios Promise based HTTP client for the browser and node.js、Github Repository、GItHub (オンライン)、入手先<https://github.com/axios/axios> (参照2022-08-29).