Fetch APIとは
Fetch APIは、JavaScriptからサーバーへデータを要求し、その結果を受け取るための標準的な仕組みです。ブラウザに最初から備わっているため、追加のライブラリなしで使えます。
ページを再読み込みせずに必要な情報だけを取りに行けるので、画面の一部だけを更新するような動的なWebページを作るときに欠かせません。fetchという関数を呼び出すのが基本の使い方です。
リクエストとレスポンスの流れ
Fetchの通信は、こちらから「このデータをください」とリクエストを送り、サーバーからレスポンスが返ってくる、という往復で成り立ちます。リクエストには取得先のURLを指定します。
返ってきたレスポンスには、成功したかどうかを示す状態コードや、本文のデータが含まれます。多くの場合、本文はJSONという形式なので、それをJavaScriptで扱えるオブジェクトに変換してから使います。
実務ではどこで関係する?
Fetch APIは言葉の意味だけ覚えても、HTML共有の判断にはつながりません。実務では「表示に関係する話か」「検索に関係する話か」「アクセス制限に関係する話か」を分けて考えると整理しやすくなります。
Fetch APIについて迷ったら、相手が安全に開けるか、検索に出してよいか、ブラウザや環境差で壊れないかを順番に確認します。用語理解は、その判断を早くするための道具として使います。手順が決まったら、HTML/ZIPをアップロードして共有URLを発行し、相手に確認してほしい観点と期限を添えて送ります。
- 表示の話: HTML/CSS/JS、パス、ブラウザ互換性を確認する
- 検索の話: noindex、canonical、sitemap、robots.txtの役割を分ける
- 制限の話: URL共有、パスワード、メール認証、会社ドメイン認証を混同しない
- 運用の話: 期限、差し替え、削除、共有メッセージまで決める
基本的な取得手順
fetchでデータを読み込む典型的な流れを整理します。非同期処理なので、結果が返るのを待つ点がポイントです。
- fetch にデータの取得先URLを渡して呼び出す
- 返ってきたレスポンスが成功しているか状態を確認する
- レスポンスの本文をJSONなどの形式に変換する
- 変換したデータをDOMに反映して画面に表示する
- 失敗した場合のエラー処理も忘れずに用意する
GETとPOSTの違い
データを取得するだけならGETという方式が使われ、これがfetchの既定の動きです。一方、フォームの内容を送信するなど、サーバーに何かを送りたいときはPOSTを指定します。
POSTの場合は、送りたいデータや形式の情報を一緒に添えて送ります。どちらの方式を使うかは、サーバー側の決まりに合わせる必要があるため、利用するサービスのルールを確認しましょう。
エラー処理の注意点
Fetchで見落としやすいのは、サーバーがエラーを返してもfetch自体は失敗扱いにならない点です。ページが見つからないといった応答でも、通信そのものは成立したとみなされます。
そのため、レスポンスの状態が成功を示しているかを自分で確認する必要があります。通信ができなかった場合に備えて、処理全体をtry/catchで囲んでおくと、トラブル時にも落ち着いて対処できます。
通信を含むページを共有するとき
Fetch APIを理解すると、外部のデータを取り込んで表示するような実用的な機能が作れるようになります。非同期処理やJSONの扱いとセットで身につけると、応用の幅が広がります。
データ取得を含むサンプルやプロトタイプを依頼主に見てもらうとき、ファイルやZIPをそのまま共有URLにできると確認がスムーズです。ギガサイト便はドロップだけで一時公開でき、関係者以外に見せたくない場合はパスワードや認証を組み合わせて限定的に共有できます。
よくある質問
Fetch APIとXMLHttpRequestはどう違いますか?
どちらもサーバーと通信する仕組みですが、Fetch APIの方が新しく、Promiseを使って書けるため記述がすっきりします。これから学ぶならFetch APIを中心に覚えるのが一般的です。
取得したデータがうまく表示されないのはなぜ?
多くはレスポンスをJSONなどに変換する処理を忘れているか、取得が非同期であることを意識せず、データが揃う前に表示しようとしているケースです。結果を待ってから画面に反映する流れを確認しましょう。
他のサイトのデータも取得できますか?
技術的には可能ですが、ブラウザの安全のためのルールにより、許可されていない外部サイトのデータは取得が制限されることがあります。これはCORSと呼ばれる仕組みで、相手側の設定に左右されます。
fetchはどのブラウザで使えますか?
現在主流のブラウザでは広く使えます。非常に古い環境では対応していない場合がありますが、学習や一般的な制作の範囲ではそのまま利用して問題ないことがほとんどです。
実務ではどこで関係する?はHTML共有で必ず理解しておく必要がありますか?
細かな仕様を暗記する必要はありません。ただし、検索に出るか、閲覧者を制限できるか、表示が崩れないかに関わる用語は、共有前の判断材料として押さえておくと安全です。