草案
このページは完成していません。
Fetch は、XMLHttpRequest と同様のより新しいコンセプトです。XMLHttpRequest と同じ機能を多く提供していますが、より拡張可能で効果的に設計されています。この記事は、Fetch API の基本コンセプトのいくつかを説明します。
この記事は随時加筆されます。より良い説明が必要な Fetch コンセプトを見つけた場合、dev-mdc メーリングリストか Mozilla IRC(#mdn room)に知らせてください。
概要
Fetch の核心はインタフェースの抽象化であり、HTTP Request、Response、Headers、Body のペイロード、そして非同期リソースリクエストの初期化のための global fetch メソッドがその対象です。HTTP の主要コンポーネントが JavaScript オブジェクトとして抽象化されているため、他の API からそれらの機能を利用しやすくなっています。
Service Worker は Fetch を多用する API の一例です。
Fetch はそれらのリクエストの非同期な性質をもう一歩先へ進めるものです。API は完全に Promise ベースです。
ガード
ガードは Headers オブジェクトの機能で、ヘッダが使用されている場所に応じて immutable、request、request-no-cors、response、none の値をとります。
Headers() の constructor を使用して新しい Headers オブジェクトが生成されるとき、ガードは none に設定されます(既定の動作)。Request オブジェクトか Response オブジェクトが生成された場合、関連づけられた Headers オブジェクトのガードは下記のとおり設定されます:
| 新しいオブジェクト型 | コンストラクタ | 関連する Headers オブジェクトのガード設定 |
|---|---|---|
Request |
Request() |
request |
no-cors の mode を設定した Request() |
request-no-cors |
|
Response |
Response() |
response |
error() メソッドか redirect() メソッド |
immutable |
ヘッダーのガードは、ヘッダーのコンテンツを変更する set() メソッドと delete() メソッド、append() メソッドに影響します。ガードが immutable の Headers を修正しようとした場合、 TypeError をスローします。しかし、次の場合は動作します:
- ガードが
requestで、ヘッダーの name が forbidden header name ではない場合。 - ガードが
request-no-corsで、ヘッダーの name/value が simple header の場合。 - ガードが
responseで、ヘッダーの name が forbidden response header name ではない場合。