Fetch の基本コンセプト

草案
このページは完成していません。

Fetch は、(ネットワークを超えて)リソースを取得するインターフェイスを提供します。 XMLHttpRequest を使っていた人には馴染み深いでしょうが、より拡張可能で効果的な機能があります。この記事は、Fetch API の基本コンセプトのいくつかを説明します。

この記事は随時加筆されます。より良い説明が必要な Fetch コンセプトを見つけた場合、MDN ディスカッションフォーラムMatrixMDN WebDocs ルームで誰かに知らせてください。

概要

Fetch の核心はインターフェイスの抽象化であり、HTTP RequestResponseHeadersBody のペイロード、そして非同期リソースリクエストの初期化のための global fetch メソッドがその対象です。HTTP の主要コンポーネントが JavaScript オブジェクトとして抽象化されているため、他の API からそれらの機能を利用しやすくなっています。

Service Worker は Fetch を多用する API の一例です。

Fetch はそれらのリクエストの非同期な性質をもう一歩先へ進めるものです。API は完全に Promise ベースです。

ガード

ガードは Headers オブジェクトの機能で、ヘッダーが使用されている場所に応じて immutablerequestrequest-no-corsresponsenone の値をとります。

Headers()コンストラクター を使用して新しい Headers オブジェクトが生成されるとき、ガードは none に設定されます(既定の動作)。Request オブジェクトか Response オブジェクトが生成された場合、関連づけられた Headers オブジェクトのガードは下記のとおり設定されます:

新しいオブジェクト型 コンストラクター 関連する Headers オブジェクトのガード設定
Request Request() request
no-corsmode を設定した Request() request-no-cors
Response Response() response
error() メソッドか redirect() メソッド immutable

ヘッダーのガードは、ヘッダーのコンテンツを変更する set() メソッドと delete() メソッド、append() メソッドに影響します。ガードが immutableHeaders を修正しようとした場合、 TypeError をスローします。しかし、次の場合は動作します: