草案
このページは完成していません。
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 ではない場合。