Apidog

オールインワン協働API開発プラットフォーム

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

ReactでFetchを使ってAPIからデータを取得

ReactでフロントエンドのWebページを開発する際、Fetch APIを使用してAPIとのデータ通信を実現するのが一般的なパターンです。それでは、本文では、ReactでFetch APIを使って、APIとの連携を実現する方法を紹介した上、一番使いやすいAPI管理ツールを使って、APIの定義から直接にFetch APIのクライアントコードを生成してReactで適用する方法をも紹介しようと思います。

中村 拓也

中村 拓也

Updated on 11月 12, 2024

ReactでフロントエンドのWebページを開発する際、Fetch APIを使用してAPIとのデータ通信を実現するのが一般的なパターンです。それでは、本文では、ReactでFetch APIを使って、APIとの連携を実現する方法を紹介した上、一番使いやすいAPI管理ツールを使って、APIの定義から直接にFetch APIのクライアントコードを生成してReactで適用する方法をも紹介しようと思います。Fetch APIのクライアントコードの書くのが面倒くさいと思っている開発者は、この便利なツールをお見逃しないでください。

button

ReactとFetch APIについて

本論に入る前に、まずはReactとFetch APIということを簡単に紹介していみたいと思います。

Reactとは

ReactはUIを構築するためのJavaScriptライブラリです。Facebookが開発し、Instagramや多くの有名サービスで利用されています。主に次のような特徴があります:

  • コンポーネントベース - UIを再利用可能なコンポーネントの組み合わせで実装できる
  • 仮想DOM - 実DOMの代わりに高速な仮想DOMを使用しUIの変更を最小限に抑える
  • JSXサポート - HTMLのような記法でUIコードを直感的に記述できる
  • シングルウェイデータフロー - データは上方向への一方通行で流れる
  • 高いパフォーマンス -  diffアルゴリズムと仮想DOMにより高速なレンダリング

開発者がDOM操作ではなくアプリケーションロジックに集中できるよう設計されています。大規模アプリやSPAに向いている点が特徴です。ReactはViewだけを担当するので、通常は他のライブラリと組み合わせて使われます。

Fetch APIとは

そもそもFetch APIとは何かを見に行きましょう。FetchはJavaScript でHTTP ネットワークリクエストを行うためのインターフェイスです。現在、Fetch APIは、iOSやAndroidなどのモバイルアプリ開発においてもFetchは必要不可欠なAPIとして使用されています。主に次のような特徴があります。

  • ブラウザとNode.jsの両方で利用できる
  • Promiseベースで書けるため非同期処理が扱いやすい
  • XHRよりコードがシンプルに書ける
  • レスポンスの本文をstreamで取得できる

基本的な使い方は下記のようになります。

fetch(url, options) 
  .then(response => {
    // responseを処理
  })
  .catch(error => {
    // エラーハンドリング
  });
  • urlにリクエストを送信したいエンドポイントを指定
  • optionsにリクエストのカスタマイズオプションを指定できる
  • レスポンスがPromiseを返すのでthenで受け取れる

ReactとFetch APIとの併用について

ReactでフロントエンドのWebページを開発する際、Fetch APIを使用してAPIとのデータ通信を実現するのが一般的なパターンです。その理由としては、ReactはView層にフォーカスしたUI構築ライブラリであり、データ取得や状態管理などアプリケーションのロジックを担う部分は明示的に外部の機能として分離されることが多いからです。その役割を担うのがサーバーサイドのAPIです。ユーザーアクションに対応して表示内容を動的に変化させるには、外部からデータを取得して反映させる必要があります。

そこで、Fetchを使用することで、Reactのコンポーネント内から直接APIにアクセスできるようになり、複雑なデータ同期をコンポーネント単位でカプセル化できます。

こうしたReactとFetchによる実装は、UIとデータをスムーズに同期することを可能にするファクターの1つとして、Webアプリケーション開発で広く採用されている主流なアプローチといえます。

ReactでFetch APIの利用シーン

上記の内容から、ReactでなぜかFetch APIが利用される原因がわかるようになったのでしょう。それでは、この部分では、ReactでFetch APIが多く利用される具体的なシーンを皆さんに紹介していこうと思います。 ReactでFetch APIを利用する主な場合は以下の通りです。

APIを呼び出してデータを取得する場合

  • ユーザーデータ、商品データ、ブログ記事等のデータをAPI経由で取得することが多い

フォームの送信時にAPIを呼び出す場合

  • フォーム入力データをAPIエンドポイントにPOSTすることが多い

ページ遷移時にデータをFETCHして画面を初期化する場合

  • React RouterなどでコンポーネントがマウントされるタイミングでAPIを呼び出す

定期的にデータの更新をチェックする場合

  • 一定間隔でAPIを呼び出して状態を更新する

ユーザーアクションに対する応答としてAPIを呼び出す場合

  • ボタンクリック等のイベントハンドラでAPIをTriggerするケース

このようにSPA上でのデータ取得や状態遷移に応じた通信制御のためにFetchが利用されます。コンポーネントライフサイクルと合わせて非同期処理を適切に扱える必要があるため重要な技術といえます。

Fetch APIの実装コードの自動生成

Reactを使ってフロントエンドのWebページなどを開発している中、Fetch APIの実装コードを書くのが面倒くさくて嫌だと思っているかもしれません。その場合は、使いやすいAPI管理ツールのApidogを使って、1クリックだけで、APIの定義書からFetch APIの実装コードを生成してくれますので、そのコードを直接にReactで適用することができます。

button

Apidogは、YAML、JSON、CURL、Postmanなどのデータフォーマットにも対応しておりますので、これらのデータを直接にApidogにインポートすれば、API定義書が生成されます。そして、それぞれのAPI定義書に基づいて、Reactで利用可能なFetch API実装コードを簡単に生成できます。

Apidogにインポート

ApidogでFetch APIの実装を生成する手順

ステップ⒈Apidogで実装したいAPIをクリックして、右側パネルで「コード生成」にガーソルを置き、「クライアントコードを生成」を選択します。

Apidogクライアントコードの生成

ステップ⒉コード生成ウィンドウで、「JavaScript」を選択し、「Fetch」を選択すると、当該APIのFetch実装コードを生成してくれます。

Fetchの実装コードを生成
button

GETリクエストの実装コード例

var myHeaders = new Headers();

myHeaders.append("User-Agent", "Apidog/1.0.0 (https://apidog.com)");

var requestOptions = {

​    method: 'GET',

​    headers: myHeaders,

​    redirect: 'follow'

};

fetch("http://127.0.0.1:3658/m1/360626-0-default/pet/findByStatus?status=", requestOptions)

​    .then(response => response.text())

​    .then(result => console.log(result))

​    .catch(error => console.log('error', error));

POSTリクエストの実装コード例

var myHeaders = new Headers();

myHeaders.append("User-Agent", "Apidog/1.0.0 (https://apidog.com)");

var urlencoded = new URLSearchParams();

urlencoded.append("name", "Hello Kitty");

urlencoded.append("status", "sold");

var requestOptions = {

​    method: 'POST',

​    headers: myHeaders,

​    body: urlencoded,

​    redirect: 'follow'

};

fetch("http://127.0.0.1:3658/m1/360626-0-default/pet", requestOptions)

​    .then(response => response.text())

​    .then(result => console.log(result))

​    .catch(error => console.log('error', error));
button

ReactでFetch APIの実装コードを適用

Apidogを使って、Fetch APIの実装コードを生成すると、それを直接にReactで利用することができるようになります。 Reactをまだパソコンにインストールしていない場合は、次の方法を参照してまずパソコンにインストールする必要があります。

Reactのインストール方法

Reactをインストールする主な方法は以下の通りです:

// NPMを利用する場合
npm install react react-dom

// Yarnを利用する場合  
yarn add react react-dom

Reactをインストール後、import文を利用してReactをインポートできるようになります。

import React from 'react';
import ReactDOM from 'react-dom';

// Reactコードをここに記述

ReactをインポートしてFetch APIを実装

例えば、上記のFetch APIのPOSTリクエストの実装コードをReactで利用する場合は、useEffectフック内で呼び出すことができます。

import React, { useState, useEffect } from 'react'; 

function MyComponent() {

  useEffect(() => {
    var myHeaders = new Headers();
    myHeaders.append("User-Agent", "Apidog/1.0.0 (https://apidog.com)");
    
    var urlencoded = new URLSearchParams();
    urlencoded.append("name", "Hello Kitty");
    urlencoded.append("status", "sold");
    
    var requestOptions = {
      method: 'POST',
      headers: myHeaders,
      body: urlencoded,
      redirect: 'follow'
    };

    fetch("http://127.0.0.1:3658/m1/360626-0-default/pet", requestOptions)
      .then(response => response.text())
      .then(result => { 
        // 成功時の処理
      })
      .catch(error => console.log('error', error));

  }, []); // 1回だけ実行

  return (
    <div>
      {/* ここに表示 */}  
    </div>
  );
}

useEffectの第二引数に空配列を渡すことで、コンポーネントマウント時に1回だけFetchを呼び出します。Promiseのthenメソッド内でレスポンスを取得し、状態更新や画面反映の処理を記述できます。

以上のように、Fetch APIのPOSTをReactと組み合わせて利用できます。

はい、記事の最後にApidogをまとめる部分を追加しました:

まとめ

Reactでのフロントエンド開発において、外部APIとのデータ連携は必須の要件です。Fetch APIを使ってAPIコールを実装することが一般的なスタイルとなっています。しかしFetchを利用した通信コードの実装には大変な手間がかかり、生産性の低下につながりかねません。

その点、Apidogを利用することでOpenAPIから自動生成したFetchコードを活用できるため、開発効率の大幅な向上が期待できます。コード自動生成というアプローチは、単に手間の削減だけでなく、信頼性や保守性といった品質面の担保にも有効です。React開発者にとってApidogは、外部連携をスムーズかつスケーラブルに実現する強力なパートナーといえるでしょう。ぜひ活用を検討してみてください。

button

Postmanの基本的な使い方を(初心者向け)チュートリアル

Postmanの基本的な使い方を(初心者向け)

Postmanは、APIテストなどを行うための定番のツールになります。API戦略を実施する場合は、Postmanを利用することで、その効率性を大幅に向上できます。そこで、本文では、基本的なPostmanの使い方を皆さんに紹介して、Postmanを全く使ったことがないユーザーでも、本文の内容を参照して、Postmanを使いこなすことができると思います。

中村 拓也

4月 8, 2025

Clineで無料体験!Gemini 2.5 Proが今すぐ試せる方法チュートリアル

Clineで無料体験!Gemini 2.5 Proが今すぐ試せる方法

Clineを通じてGoogleのGemini 2.5 Proに無料でアクセスできることで、生産性を向上させ、複雑な問題解決に役立つ強力なAIアシスタントを提供。制約はあるものの、無料の利点は大きい。

中村 拓也

3月 28, 2025

Cloudflareで実現する高性能MCPサーバー構築ガイド:7ステップ完全解説チュートリアル

Cloudflareで実現する高性能MCPサーバー構築ガイド:7ステップ完全解説

このガイドに従えば、Cloudflareで高性能なMCPサーバーをデプロイし、拡張性、安全性、パフォーマンスを向上させることができます。すべての工程を詳細に解説します。

中村 拓也

3月 24, 2025