Skip to content

Laravel 11 で API ルートファイルが存在しない問題の解決法

📌 核心ポイント

Laravel 11 では「スリム化」方針の一環として、routes/api.php ファイルがデフォルトでインストールされなくなりました。API ルーティングを必要とする場合は、追加設定が必要です。

問題:routes/api.php が見つからない

React/Vue などフロントエンドフレームワークと Laravel のバックエンドを連携する際、API エンドポイントの定義に通常使用する routes/api.php ファイルが Laravel 11 の新規プロジェクトに存在しません。これは Laravel 11 の**「アプリケーションスクルトニング」**(skeleton optimization) による新設計仕様です。

bash
# 従来との比較(Laravel 10以前)
routes/
├── api.php     # ← Laravel 11では存在しない
├── console.php
└── web.php

解決方法1:公式推奨のAPIインストールコマンド

API ルーティング機能を追加する最もシンプルな方法:

bash
php artisan install:api

このコマンドが実行されると以下が自動的に構成されます:

  1. routes/api.php ファイルが新規作成
  2. bootstrap/app.php に API ルートの登録設定が追加
  3. app/Providers/RouteServiceProvider.php に API ミドルウェアの設定が挿入

必須確認

コマンド後に bootstrap/app.php ファイルを開き、api ルートが次のように登録されていることを確認してください:

php
withRouting(
    web: __DIR__ . '/../routes/web.php',
    api: __DIR__ . '/../routes/api.php', // この行があるか確認
    commands: __DIR__ . '/../routes/console.php',
    health: '/up',
);

見つからない場合は手動で追記します


解決方法2:手動でルート設定を追加

特殊な構成(Breezeキット使用後など)で artisan install:api が機能しない場合、bootstrap/app.php ファイルに直接APIルートを登録する必要があります。

ステップ1:routes/api.php の作成

bash
touch routes/api.php

ステップ2:bootstrap/app.php の修正

withRouting ブロック内に API ルート定義を追加します:

php
return Application::configure()
    ->withRouting(
        web: __DIR__ . '/../routes/web.php',
        commands: __DIR__ . '/../routes/console.php',
        health: '/up',
        using: function () {
            Route::middleware('web')   // Webルート
                ->group(base_path('routes/web.php'));
            
            // APIルートを手動で追加 
            Route::middleware('api')
                ->prefix('api')
                ->group(base_path('routes/api.php'));
        }
    );

💡 構成ミスのサイン

以下に当てはまる場合は手動設定が必要です:

  • Laravel Breezeインストール後にAPI追加
  • 複数のチュートリアルを組み合わせた構成
  • AI生成コードによる設定ファイル混在

Docker環境でのパーミッション問題修正

artisan install:api を実行後、APIルートが読み込まれない場合、パーミッション問題が考えられます:

bash
# Dockerコンテナ内で実行(laravel.testはコンテナ名)
docker container exec -u 0 -it laravel.test bash

# ルートディレクトリ権限修正
chmod -R 777 /var/www/html/routes/

# Laravelキャッシュクリア
php artisan optimize:clear

まとめ:APIルート設定フロー

  1. 基本手順

    bash
    php artisan install:api
  2. 特殊構成時の対応

    • routes/api.php 手動作成
    • bootstrap/app.php にルート定義追記
  3. Docker環境

    • ファイルパーミッション確認
    • sailコマンド経由での実行確認 (sail artisan ...)

✅ 最終確認事項

APIルートを正しく動作させるには必ず:

  • bootstrap/app.php にapiルート定義が存在
  • app/Providers/RouteServiceProvider.php にミドルウェア設定 ::>

APIルート設定後は、Laravel 10以前と同じroutes/api.phpファイルでルート定義が可能になります。

php
<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::get('/test', function(Request $request) {
    return response()->json(['message' => 'API接続成功']);
});