サーチ…
構文
- promise = fetch(url).then(function(response){})
- promise = fetch(url、options)
- 約束=フェッチ(要求)
パラメーター
オプション | 詳細 |
---|---|
method | 要求に使用するHTTPメソッド。例: GET 、 POST 、 PUT 、 DELETE 、 HEAD 。デフォルトはGET です。 |
headers | 要求に含める追加のHTTPヘッダーを含むHeaders オブジェクト。 |
body | 要求ペイロードは、 string またはFormData オブジェクトです。デフォルトはundefined |
cache | キャッシングモード。 default 、 reload 、 no-cache |
referrer | リクエストのリファラー。 |
mode | cors 、 no-cors 、 same-origin 。デフォルトはno-cors です。 |
credentials | omit 、 same-origin 、 include 。デフォルトではomit ます。 |
redirect | follow 、 error 、 manual 。デフォルトにfollow 。 |
integrity | 関連する整合性メタデータデフォルトは空文字列です。 |
備考
フェッチ標準は、要求、応答、およびそれらをバインドするプロセスを定義します。
他のインターフェイスの中でも、この標準では、ネットワーク要求を含むすべての操作に使用するように設計されたRequest
オブジェクトとResponse
オブジェクトが定義されています。
これらのインターフェイスの便利なアプリケーションはGlobalFetch
、リモートリソースをロードするために使用できます。
Fetch標準をまだサポートしていないブラウザの場合、GitHubにはpolyfillが用意されています。さらに、サーバー/クライアントの一貫性に役立つNode.js実装もあります。
キャンセル可能な約束がない場合、フェッチ要求を中止することはできません( githubの問題 )。しかし、キャンセル可能な約束については、第1段階のT39による提案がある。
GlobalFetch
GlobalFetchインターフェイスはfetch
関数を公開しています.fetch関数はリソースの要求に使用できます。
fetch('/path/to/resource.json')
.then(response => {
if (!response.ok()) {
throw new Error("Request failed!");
}
return response.json();
})
.then(json => {
console.log(json);
});
解決された値は応答オブジェクトです。このオブジェクトは、レスポンスの本文とステータスとヘッダーを含みます。
リクエストヘッダを設定する
fetch('/example.json', {
headers: new Headers({
'Accept': 'text/plain',
'X-Your-Custom-Header': 'example value'
})
});
POSTデータ
フォームデータの転記
fetch(`/example/submit`, {
method: 'POST',
body: new FormData(document.getElementById('example-form'))
});
JSONデータの投稿
fetch(`/example/submit.json`, {
method: 'POST',
body: JSON.stringify({
email: document.getElementById('example-email').value,
comment: document.getElementById('example-comment').value
})
});
クッキーを送信する
フェッチ機能はデフォルトでクッキーを送信しません。 Cookieを送信する方法は2つあります。
- URLが呼び出し元のスクリプトと同じ起点にある場合のみ、Cookieを送信します。
fetch('/login', {
credentials: 'same-origin'
})
- クロスオリジン通話の場合でも、常にクッキーを送信してください。
fetch('https://otherdomain.com/login', {
credentials: 'include'
})
JSONデータの取得
// get some data from stackoverflow
fetch("https://api.stackexchange.com/2.2/questions/featured?order=desc&sort=activity&site=stackoverflow")
.then(resp => resp.json())
.then(json => console.log(json))
.catch(err => console.log(err));
フェッチを使用してスタックオーバーフローAPIからの質問を表示する
const url =
'http://api.stackexchange.com/2.2/questions?site=stackoverflow&tagged=javascript';
const questionList = document.createElement('ul');
document.body.appendChild(questionList);
const responseData = fetch(url).then(response => response.json());
responseData.then(({items, has_more, quota_max, quota_remaining}) => {
for (const {title, score, owner, link, answer_count} of items) {
const listItem = document.createElement('li');
questionList.appendChild(listItem);
const a = document.createElement('a');
listItem.appendChild(a);
a.href = link;
a.textContent = `[${score}] ${title} (by ${owner.display_name || 'somebody'})`
}
});
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow