Fetch API は、HTTP リクエストの作成に使用される JavaScript の最新の Promise ベースのインターフェイスです。これにより、サーバーからリソースを取得するプロセスが簡素化され、XMLHttpRequest などの古いメソッドが置き換えられます。 Fetch は、ネットワークのリクエストとレスポンスを処理するための、よりクリーンで読みやすいアプローチを提供し、Promise、ストリーミング、async/await などの機能をサポートします。
fetch(url, options) .then(response => { // Handle the response }) .catch(error => { // Handle errors });
フェッチのデフォルトは GET メソッドです。
例:
fetch("https://jsonplaceholder.typicode.com/posts") .then(response => { if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } return response.json(); }) .then(data => console.log("Data:", data)) .catch(error => console.error("Error:", error));
サーバーにデータを送信するには、options オブジェクトの body プロパティを指定して POST メソッドを使用します。
例:
fetch("https://jsonplaceholder.typicode.com/posts", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ title: "foo", body: "bar", userId: 1, }), }) .then(response => response.json()) .then(data => console.log("Response:", data)) .catch(error => console.error("Error:", error));
フェッチ関数は、リクエストを構成するためのオプション オブジェクトを受け入れます:
Option | Description |
---|---|
method | HTTP method (e.g., GET, POST, PUT, DELETE). |
headers | Object containing request headers. |
body | Data to send with the request (e.g., JSON, form data). |
credentials | Controls whether cookies are sent with the request (include, same-origin). |
6.応答の処理
Method | Description |
---|---|
response.text() | Returns response as plain text. |
response.json() | Parses the response as JSON. |
response.blob() | Returns response as a binary Blob. |
response.arrayBuffer() | Provides response as an ArrayBuffer. |
例: JSON の取得
fetch(url, options) .then(response => { // Handle the response }) .catch(error => { // Handle errors });
Async/await により、Fetch での Promise の処理が簡素化されます。
例:
fetch("https://jsonplaceholder.typicode.com/posts") .then(response => { if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } return response.json(); }) .then(data => console.log("Data:", data)) .catch(error => console.error("Error:", error));
XMLHttpRequest とは異なり、Fetch は HTTP エラーの Promise を拒否しません。応答の ok プロパティまたはステータス コードを確認する必要があります。
例:
fetch("https://jsonplaceholder.typicode.com/posts", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ title: "foo", body: "bar", userId: 1, }), }) .then(response => response.json()) .then(data => console.log("Response:", data)) .catch(error => console.error("Error:", error));
Fetch はリクエストのタイムアウトをネイティブにサポートしていません。 Promise.race() を使用してタイムアウトを実装できます。
例:
fetch("https://api.example.com/data") .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error("Error:", error));
Feature | Fetch API | XMLHttpRequest |
---|---|---|
Syntax | Promise-based, simpler, cleaner. | Callback-based, verbose. |
Error Handling | Requires manual handling of HTTP errors. | Built-in HTTP error handling. |
Streaming | Supports streaming responses. | Limited streaming capabilities. |
Modern Features | Works with Promises, async/await. | No built-in Promise support. |
Fetch は、最新の Web 開発プロジェクトに最適です。
Promise および async/await とシームレスに統合されます。
よりクリーンで保守しやすいコードが必要な場合に使用してください。
以上がFetch API をマスターする: JavaScript での HTTP リクエストを簡素化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。