Laravel 12 で routes/api.phpを追加する方法【手順まとめ】

に公開

Laravel 12 では、従来存在していた routes/api.php がデフォルトでは廃止されています。
追加すれば、これまでと同様に API 専用のルートファイルを使うことが可能です。


✅ なぜ routes/api.php が無くなったの?

Laravel 12 ではルーティングが bootstrap/app.phpApplication::configure() によって明示的に指定される形に変わったため、使いたいルートファイルは自分で指定する必要があるようです。


🚀 追加手順まとめ

🔹 Step 1: routes/api.php を作成

touch routes/api.php
<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\NoteController;

Route::apiResource('notes', NoteController::class);

🔹 Step 2: bootstrap/app.php に api ルートを読み込む設定を追加

Laravel 12 の bootstrap/app.php はこのようになっています:

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )

この withRouting() の中に、以下の1行を追加:

api: __DIR__.'/../routes/api.php',

✅ 修正後の例:

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        api: __DIR__.'/../routes/api.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )

🔹 Step 3: ルーティング確認

以下コマンドで /api プレフィックスが付いたルートが追加されていることを確認できます:

php artisan route:list

結果の例:

GET|HEAD  api/notes .......... App\Http\Controllers\NoteController@index
POST      api/notes .......... App\Http\Controllers\NoteController@store
...

今まで通り api.php を使ったルーティングが可能に

これで Laravel 12 でも、

  • GET /api/notes
  • POST /api/notes
  • PUT /api/notes/{id}
  • DELETE /api/notes/{id}

などの RESTful APIルートが routes/api.php に書けるようになります!

Discussion