JavaScript - Fetch API: A Beginner's Guide

こんにちは、未来のプログラマーさんたち!今日は、JavaScriptのFetch APIの世界に一緒に飛び込みます。プログラミングが初めての方でも心配しないでください。私はあなたの親切なガイドとして、すべてをステップバイステップで説明します。では、コーヒー(またはお好みでティー)を一杯取り、一緒に潜りましょう!

JavaScript - Fetch API

Fetch APIとは?

レストランであなたのお気に入りの料理を注文する場面を想像してみてください。あなたはウェイター(あなたがリクエストを送る)を呼び、ウェイターはキッチン(サーバー)に行き、あなたの美味しい料理(レスポンス)を持ってきます。Fetch APIも同じような方法で動作しますが、ここでは料理ではなくデータを扱います!

Fetch APIは、ブラウザからサーバーへのネットワークリクエストを行う現代的なインターフェースです。メッセンジャーのようにサーバーにリクエストを送り、必要なデータを持って戻ってくるものです。

簡単な例を見てみましょう:

fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

これが混乱するかもしれませんが、すぐに説明します!

Fetch() API レスポンスの 'then...catch' ブロックでの処理

では、Fetchリクエストのレスポンスをどのように処理するか詳しく見てみましょう。私たちは 'then...catch' ブロックを使用します。これは、ウェイターがあなたの注文を持ってくる(またはそれを落としてしまう)ときの指示セットと考えてください。

fetch('https://api.example.com/users')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
console.log('User data:', data);
})
.catch(error => {
console.error('There was a problem with the fetch operation:', error);
});

これを分解してみましょう:

  1. fetch()を呼び、データを取得したいURLを指定します。
  2. 最初の .then() はレスポンスが正常かどうかをチェックします。正常でない場合はエラーをスローします。
  3. レスポンスが正常の場合、JSON形式に変換します。
  4. 二つ目の .then() はJSONデータを受け取り、コンソールにログします。
  5. どこかでエラーが発生した場合、.catch() ブロックがエラーを処理します。

Fetch() API レスポンスの非同期処理

時々、コードがFetch操作が完了するのを待ってから次に進む必要があります。ここで async/await が便利になります。これは、ウェイターに「私が注文が準備されるのをここで待っている」と言うのに似ています。

async function fetchUsers() {
try {
const response = await fetch('https://api.example.com/users');
if (!response.ok) {
throw new Error('Network response was not ok');
}
const data = await response.json();
console.log('User data:', data);
} catch (error) {
console.error('There was a problem with the fetch operation:', error);
}
}

fetchUsers();

この例では:

  1. async関数 fetchUsers を定義します。
  2. 関数内で awaitを使用してFetch操作を待ちます。
  3. レスポンスをJSONに変換し待ちます。
  4. エラーが発生した場合、catchブロックでキャッチします。

Fetch() APIのオプション

Fetch APIはデータを取得するだけでなく、リクエストをカスタマイズすることもできます!これは、レストランであなたの料理を exactly にどのように準備したいかを指定するのに似ています。

以下は、Fetchで使用できる一般的なオプションの表です:

オプション 説明
method 使用するHTTPメソッド(GET, POSTなど) method: 'POST'
headers リクエストに追加したいヘッダー headers: { 'Content-Type': 'application/json' }
body リクエストと一緒に送信したいデータ body: JSON.stringify({ name: 'John' })
mode リクエストで使用したいモード mode: 'cors'

以下に、これらのオプションを使用した例を見てみましょう:

fetch('https://api.example.com/users', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'John Doe',
email: '[email protected]'
})
})
.then(response => response.json())
.then(data => console.log('Success:', data))
.catch(error => console.error('Error:', error));

この例では、POSTリクエストを送信し、ユーザーデータを一緒に送信しています。これは、私たちの架空のレストランでカスタム注文をすることに似ています!

Fetch() APIの利点

Fetch APIを探索した今、おそらく「なぜ他の方法ではなくこれを使うべきか?」と思っているかもしれません。では、いくつかの素晴らしい利点についてお話ししましょう:

  1. シンプルさ:Fetchは現代のブラウザに組み込まれているため、外部ライブラリを含める必要がありません。

  2. Promiseベース:FetchはPromiseを返すため、非同期操作を簡単に処理できます。

  3. 柔軟性:リクエストをさまざまなオプションでカスタマイズできます。

  4. 現代性:XMLHttpRequestなどの古い方法に比べてより現代的なアプローチです。

  5. 一貫性:異なるブラウザ間でネットワークリクエストを行う方法を一貫して提供します。

以下に、これらの利点を示す簡単な例を見てみましょう:

async function fetchData(url) {
try {
const response = await fetch(url);
const data = await response.json();
return data;
} catch (error) {
console.error('Error fetching data:', error);
}
}

fetchData('https://api.example.com/data')
.then(data => console.log('Fetched data:', data));

この簡単な関数は、任意のURLからデータを取得するために再利用できます。これはFetch APIのシンプルさと柔軟性を示しています。

そして、ここまでがFetch APIの世界への旅です。Fetch APIの理解、レスポンスの処理、オプションの使用、そしてその利点を appreciate することまでを一緒に学びました。記憶術は練習によって身につくものです。ですから、実験を恐れず、さまざまなリクエストを試してみてください。

ハッピーコーディング、そしてあなたのFetchリクエストが常に探しているデータを持って戻ってくることを祈っています!

Credits: Image by storyset