カテゴリ: Laravel 更新日: 2026/06/28

LaravelのAPIとフロントエンド(Vue/React)を接続する方法を初心者向けにやさしく解説

LaravelのAPIとフロントエンド(Vue/React)を接続する方法
LaravelのAPIとフロントエンド(Vue/React)を接続する方法

先生と生徒の会話形式で理解しよう

生徒

「LaravelでAPIを作ったあと、画面はどうやって表示するんですか?」

先生

「画面側はVueやReactといったフロントエンドで作り、LaravelのAPIと通信します」

生徒

「通信って、難しそうで不安です…」

先生

「大丈夫です。仕組みを知れば、手紙のやり取りのように理解できます」

1. LaravelのAPIとフロントエンドの関係とは?

1. LaravelのAPIとフロントエンドの関係とは?
1. LaravelのAPIとフロントエンドの関係とは?

LaravelのAPI開発では、データを返す役割をLaravelが担当します。一方で、VueやReactは画面を表示する役割を持っています。これは、料理を作る人と、料理を運ぶ人が分かれているレストランのような関係です。

APIとは「決まった形式でデータを渡す窓口」のことです。LaravelのAPIはJSONという形式でデータを返し、フロントエンドはそのデータを受け取って画面に表示します。

2. API通信の基本仕組みを超かんたんに理解しよう

2. API通信の基本仕組みを超かんたんに理解しよう
2. API通信の基本仕組みを超かんたんに理解しよう

API通信は、インターネットを使ったお手紙の交換に例えられます。フロントエンドが「データください」という手紙を送り、LaravelのAPIが「どうぞ」と返事をします。

このとき使われるのがHTTP通信です。HTTPとは、インターネット上で情報をやり取りするための共通ルールです。難しく考えず、「決まりごと」と覚えて大丈夫です。

3. Laravel側でAPIを用意する流れ

3. Laravel側でAPIを用意する流れ
3. Laravel側でAPIを用意する流れ

Laravelでは、ルーティングとコントローラを使ってAPIを作ります。API用のルートはroutes/api.phpに書くのが基本です。ここに「このURLにアクセスされたら、この処理をする」という決まりを書きます。

コントローラでは、配列のデータをそのまま返すだけで、自動的にJSON形式に変換されます。これにより、VueやReactから使いやすいAPIになります。


Route::get('/message', function () {
    return ['message' => 'こんにちは、Laravel APIです'];
});

4. VueやReactからAPIを呼び出す考え方

4. VueやReactからAPIを呼び出す考え方
4. VueやReactからAPIを呼び出す考え方

VueやReactでは、APIを呼び出す処理を書いて、LaravelのAPIにアクセスします。ここでよく使われるのがfetchという仕組みです。fetchは「このURLにアクセスして、結果を受け取る」ための命令です。

受け取ったJSONデータは、変数に入れて画面に表示します。つまり、Laravelは裏方、VueやReactは表舞台という役割分担になります。


<script>
fetch('http://localhost/api/message')
  .then(response => response.json())
  .then(data => {
    console.log(data.message);
  });
</script>

5. なぜAPIとフロントエンドを分けるのか

5. なぜAPIとフロントエンドを分けるのか
5. なぜAPIとフロントエンドを分けるのか

APIとフロントエンドを分けることで、作業を分担しやすくなります。また、同じLaravelのAPIを使って、スマホアプリや別の画面を作ることもできます。

この仕組みは、Laravel API開発、Vue連携、React連携といったキーワードで多く使われており、現場でも一般的です。最初は難しく感じますが、役割を分けて考えると理解しやすくなります。

6. 初心者がつまずきやすいポイント

6. 初心者がつまずきやすいポイント
6. 初心者がつまずきやすいポイント

初心者がよく困るのは、「画面に何も表示されない」という点です。これは、URLが間違っていたり、APIが動いていないことが原因です。

まずは、ブラウザでAPIのURLに直接アクセスして、JSONが表示されるか確認しましょう。これができれば、LaravelのAPIは正しく動いています。

まとめ

まとめ
まとめ

ここまで、Laravelをバックエンド(APIサーバー)として利用し、Vue.jsやReactといったモダンなフロントエンドフレームワークと連携させる基礎知識について解説してきました。 現代のWeb開発において、「密結合」から「疎結合」へという流れは非常に重要です。かつてのWeb開発では、PHPの中でHTMLを組み立てて表示する手法が一般的でしたが、現在ではLaravel API開発とフロントエンドを分離することで、保守性や拡張性が飛躍的に向上します。

API連携の核心:JSONデータのやり取り

Laravelとフロントエンドを繋ぐ架け橋となるのがJSON(JavaScript Object Notation)です。Laravel側では複雑なデータベース操作やビジネスロジックを完結させ、その結果をシンプルなテキストデータであるJSONとして書き出します。 フロントエンド側は、そのデータを受け取り、JavaScriptの力を使って動的にブラウザ上の見た目(DOM)を書き換えます。この一連の動作が、私たちが普段目にしている「ページ遷移のないスムーズな操作感(SPA: Single Page Application)」を実現しているのです。

実践的なAPI実装のコード例

実際のプロジェクトでは、単にメッセージを返すだけでなく、データベース(Eloquent)から取得した情報を返却することがほとんどです。 例えば、商品一覧を取得するAPIを構築する場合、Laravelのコントローラは以下のように記述します。


namespace App\Http\Controllers;

use App\Models\Product;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    public function index()
    {
        // データベースから全商品を取得
        $products = Product::all();
        
        // 配列を返却するだけで、Laravelが自動的にJSONへ変換します
        return response()->json($products);
    }
}

このAPIに対して、フロントエンド(JavaScript)側からデータを取得し、コンソールに表示する基本的な処理は次のようになります。


<script>
// 非同期関数でAPIを呼び出す例
async function getProducts() {
    try {
        const response = await fetch('http://localhost/api/products');
        if (!response.ok) {
            throw new Error('ネットワーク応答が正常ではありません');
        }
        const data = await response.json();
        console.log('取得した商品データ:', data);
    } catch (error) {
        console.error('エラーが発生しました:', error);
    }
}

getProducts();
</script>

開発をスムーズに進めるためのヒント

Laravel APIとVue/Reactの連携で最初に出会う壁は、多くの場合CORS(Cross-Origin Resource Sharing)の設定です。 異なるドメインやポート(例えばLaravelが8000、Reactが3000など)の間で通信を行うには、Laravel側で許可の設定を行う必要があります。 最新のLaravelであればデフォルトで設定ファイルが用意されていますが、もし通信がブロックされた場合は、config/cors.phpの設定を確認してみましょう。

また、APIのテストにはブラウザだけでなく、PostmanInsomniaといったツールを活用するのがプロの現場では一般的です。 画面が出来上がる前でも、API単体で正しくデータが返ってくるかをチェックする癖をつけると、デバッグの効率が格段にアップします。

フロントエンドとバックエンドの分離は、学習コストこそ少し高いものの、一度習得してしまえば「Webアプリ」「スマホアプリ」「デスクトップアプリ」など、一つのAPIから多様なプラットフォームへ展開できる強力な武器になります。 まずは小さなJSONを返すところから、一歩ずつ挑戦してみてください。

先生と生徒の振り返り会話

生徒

先生、まとめを読んで役割分担がかなりスッキリ理解できました!Laravelは「データの工場」で、VueやReactは「お店のショーウィンドウ」みたいなイメージですね。

先生

その例えは非常に分かりやすいですね!工場(Laravel)がどれだけ立派な製品(データ)を作っても、ショーウィンドウ(フロントエンド)がなければお客さんには届きません。逆に、見た目が綺麗でも、裏側の工場が止まっていたら何も表示されないわけです。

生徒

さっきのプログラムコードを見て気になったんですが、response()->json()と書くだけで、ブラウザが理解できる形式になるんですか?

先生

良い質問です。Laravelは非常に賢いフレームワークなので、コントローラから配列やコレクションを返すと、自動的に適切なHTTPヘッダーを付けてJSON形式で出力してくれます。これによって、フロントエンド側は「これはJSONデータだ」と迷わずに処理できるんです。

生徒

なるほど。あと、初心者がつまずきやすいという「CORS」についても調べてみました。違う場所からのアクセスを許可してあげる設定が必要なんですね。

先生

その通りです。セキュリティのための守衛さんのような役割ですね。開発中は少し手間に感じますが、大切な仕組みです。これでLaravel API開発の基礎はバッチリです。次は実際に、データベースの情報を画面にリスト表示させる練習をしてみましょう!

この章の学習完了

関連記事:
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelのルートとコントローラを対応付ける方法(名前付きルート)を初心者向けに解説
New2
Symfony
Symfonyで画像やファイルをアップロードする時のバリデーション完全ガイド!初心者でもわかる入力チェックの基本
New3
Laravel
Laravelで言語切替UIを作る!多言語対応(ローカリゼーション)実践ガイド
New4
CodeIgniter
CodeIgniterでローカル開発環境を構築する方法!初心者向け完全ガイド
人気記事
No.1
Java&Spring記事人気No1
CodeIgniter
CodeIgniterのキャッシュ管理を完全ガイド!初心者でもわかるメリットと注意点
No.2
Java&Spring記事人気No2
Symfony
Symfony学習に役立つおすすめドキュメント・教材・リソース一覧【初心者向け】
No.3
Java&Spring記事人気No3
Laravel
Laravelのプロジェクト構造を理解しよう!初心者向けディレクトリ解説
No.4
Java&Spring記事人気No4
CodeIgniter
CodeIgniterとは?特徴・できること・他PHPフレームワークとの違いを完全解説
No.5
Java&Spring記事人気No5
Laravel
Laravelローカリゼーション入門!言語の取得と切り替え(App::getLocale / setLocale)を徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelの条件分岐とループ処理をBladeで書く方法
No.7
Java&Spring記事人気No7
Laravel
Laravelのルーティングの基本構文と書き方をやさしく解説!初心者でも理解できるWebルートの仕組み
No.8
Java&Spring記事人気No8
CodeIgniter
CodeIgniterのビュー共通化ガイド!初心者でもわかる部分ビューの読み込みとinclude設計