Fetch APIとAbortControllerの検出
モダンHTTPリクエスト用のFetch APIとAbortControllerサポートを検出。リクエスト設定、ストリーミングレスポンス、タイムアウト処理を解説。
Network
詳細な説明
Fetch API検出
Fetch APIはXMLHttpRequestのモダンな代替であり、ブラウザからHTTPリクエストを行うためのクリーンなPromiseベースのインターフェースを提供します。
検出
const hasFetch = typeof fetch !== 'undefined';
const hasAbortController = typeof AbortController !== 'undefined';
const hasRequest = typeof Request !== 'undefined';
const hasResponse = typeof Response !== 'undefined';
基本的な使い方
async function fetchData(url) {
const response = await fetch(url, {
method: 'GET',
headers: {
'Accept': 'application/json',
},
});
if (!response.ok) {
throw new Error(\`HTTP \${response.status}\`);
}
return response.json();
}
リクエストのキャンセル
function fetchWithTimeout(url, timeout = 5000) {
const controller = new AbortController();
const timeoutId = setTimeout(
() => controller.abort(),
timeout
);
return fetch(url, { signal: controller.signal })
.finally(() => clearTimeout(timeoutId));
}
ストリーミングレスポンス
async function fetchStream(url) {
const response = await fetch(url);
const reader = response.body.getReader();
while (true) {
const { done, value } = await reader.read();
if (done) break;
processChunk(value);
}
}
Fetch vs XMLHttpRequest
| 機能 | Fetch | XMLHttpRequest |
|---|---|---|
| Promiseベース | はい | いいえ |
| ストリーミング | はい | いいえ |
| リクエストキャンセル | AbortController | xhr.abort() |
| アップロード進捗 | いいえ(まだ) | はい |
| Cookie処理 | 設定可能 | 自動 |
認証情報とCORS
credentials: 'same-origin'(デフォルト)- 同一オリジンのみCookieを送信credentials: 'include'- 常にCookieを送信mode: 'cors'- CORSヘッダー付きのクロスオリジンリクエストを有効化
ユースケース
モダンWebアプリケーションでHTTPリクエストを行う標準的な方法です。REST API呼び出し、ファイルアップロード、サーバー送信イベント処理、ストリーミングデータに使用されます。AbortControllerはReact/Vueでコンポーネントがアンマウントされた時のリクエストキャンセルに重要です。