【JS応用|初心者向け】フロントエンドエンジニアのための「Responseオブジェクト」基礎と活用術

導入:なぜResponseオブジェクトを知るべきなのか?

Web開発でAPIからデータを取得する際、私たちは「fetch関数」を日常的に使います。しかし、取得したデータが何者なのか、どうやって安全に取り扱うのかを理解していないと、エラーハンドリングでつまずいたり、予期せぬバグを生んだりしてしまいます。API通信の要となる「Responseオブジェクト」を理解することは、堅牢なフロントエンドを構築するための第一歩です。

基礎知識:Responseオブジェクトとは?

Responseオブジェクトは、fetchAPIがサーバーからのレスポンスを受け取った際に生成する「入れ物」のようなものです。
単に「データ本体」が入っているわけではありません。例えば、通信が成功したかを示す「ステータスコード(200 OKなど)」や、データの形式を示す「ヘッダー情報」、そして実際の「本文(ボディ)」といった情報がひとまとめになっています。

実装:Responseの活用ステップ

API通信を行う際は、以下の3つの手順を意識しましょう。
1. fetchでリクエストを送り、Responseオブジェクトを受け取る。
2. okプロパティで「通信が成功したか」を確認する。
3. json()などのメソッドを使って、扱いやすい形式に変換する。

サンプルプログラム:安全なデータ取得コード

以下のコードは、実際にAPIからデータを取得し、エラーハンドリングを含めた基本的な実装例です。そのままコピーして、ブラウザのコンソールなどで動作を確認してみてください。

async function fetchData() {
  try {
    // APIへリクエストを送信
    const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');

    // 1. レスポンスが正常か確認 (ステータスコードが200-299の範囲か)
    if (!response.ok) {
      throw new Error('ネットワークエラーまたはサーバーエラーです: ' + response.status);
    }

    // 2. Responseの中身をJSON形式として解析
    const data = await response.json();

    // 3. データを表示
    console.log('取得成功:', data);
  } catch (error) {
    // 通信自体が失敗した場合の処理
    console.error('エラーが発生しました:', error.message);
  }
}

fetchData();

応用・注意点:現場で役立つポイント

・一度しか読めないボディ:
Responseオブジェクトのボディ(json()やtext()など)は、一度読み出すと「消費」され、二度目には空になってしまいます。もしデータを複数回使いたい場合は、変数に格納して再利用しましょう。

・404や500エラーの扱い:
fetch関数は、サーバーが404(見つからない)や500(サーバーエラー)を返しても、Promiseが拒否(reject)されません。必ずresponse.okを使って、自前でエラーチェックを行うことが実務では必須の作法となります。

これらを意識するだけで、API通信の信頼性がぐっと向上します。まずはこのテンプレートをベースに、自分のプロジェクトで試してみてください!

タイトルとURLをコピーしました