0Pricing
JavaScript Academy · レッスン

GET リクエストを送信する

データを取得し、JSON レスポンスを解析します。

「GET リクエストを送信する」はCoddyKit上の無料JavaScript Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJavaScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 JavaScript Academyコースには全4レッスンが含まれています。

fetch の動作

Fetch APIはブラウザーからHTTPリクエストを送信し、Promiseを返します。古いXMLHttpRequestに代わる最新のAPIです。

基本的な GET

URLを指定してfetch(url)を呼び出します。デフォルトではGETメソッドが使われ、Responseオブジェクトで解決されます。

fetch("https://api.example.com/users")
  .then((response) => {
    console.log(response.status); // 200
  });

Response オブジェクト

解決される値はデータそのものではなく、Responseです。ステータス、ヘッダー、本文を読み取るためのメソッドなどが含まれています。内容を取得するには、本文用のメソッドを呼び出す必要があります。

fetch(url).then((response) => {
  console.log(response.ok);     // true if status 200-299
  console.log(response.status); // 200
});

JSONを解析する

多くのAPIはJSONを返します。response.json()を呼び出すと、解析されたオブジェクトで解決されるPromiseが返されます。

fetch(url)
  .then((response) => response.json())
  .then((data) => {
    console.log(data); // parsed JS object/array
  });

Promiseが2つある理由

最初のPromiseはヘッダーが届いた時点で解決され、2つ目のPromise(.json())は本文全体のダウンロードと解析が完了した時点で解決されます。そのため、.then()を2回チェーンします。

async/await を使う

読みやすさのため、多くのコードではasync/awaitを使います。それぞれのawaitは、対応するPromiseが解決されるまで処理を一時停止します。

async function getUsers() {
  const response = await fetch(url);
  const data = await response.json();
  return data;
}

その他の本文読み取りメソッド

json()のほかにも、Responseはtext()、blob()(バイナリ)、arrayBuffer()、formData()として読み取れます。サーバーが返す内容に応じて選択します。

const response = await fetch(url);
const html = await response.text(); // raw string

本文は1回しか読み取れない

レスポンス本文はストリームであり、1回しか消費できません。同じレスポンスに対してjson()を呼び出した後でtext()を呼び出すと、エラーが発生します。本当に両方が必要な場合は、response.clone()で複製してください。

クエリパラメーター

クエリ文字列は手作業で連結せず、URLSearchParamsを使って安全に構築します。特殊文字のエンコードは自動的に行われます。

const params = new URLSearchParams({ page: 2, q: "hello world" });
fetch("https://api.example.com/search?" + params);

ヘッダーを送信する

2番目の引数にオプションを渡します。GETでは、Acceptヘッダーや認証トークンを設定することがよくあります。

fetch(url, {
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer " + token
  }
});

Promiseを返す

fetchの処理を、Promiseを返す関数で包みます。そうすると呼び出し側でawaitでき、アプリ内でデータ読み込み処理を再利用しやすくなります。

function loadUser(id) {
  return fetch("/api/users/" + id).then((r) => r.json());
}

確認問題

fetchを使ったGETリクエストについて確認します。

まとめ

fetch(url)は、Responseに解決されるPromiseを返します。本文はjson()、text()、blob()で読み取りますが、読み取りは1回しかできません。明快に記述するにはasync/awaitを、クエリ文字列にはURLSearchParamsを使い、ヘッダーはオプションオブジェクトで指定します。Promiseを返す関数に包むことで再利用できます。

よくある質問

「GET リクエストを送信する」レッスンは無料ですか?

はい。「GET リクエストを送信する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、JavaScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 JavaScript Academyコースには全4レッスンが含まれています。

「GET リクエストを送信する」で何を学びますか?

データを取得し、JSON レスポンスを解析します。 ブラウザで直接実行するハンズオンコードでJavaScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

JavaScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJavaScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「GET リクエストを送信する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJavaScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのJavaScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. GET リクエストを送信する
  2. POST とデータの送信
  3. エラーとステータスコードを処理する
  4. AbortController でリクエストを中止する
← JavaScript Academyに戻る