ルーティング
基本的なルーティング
最も基本的なLaravelのルートはURIとクロージャを受け入れ、複雑なルーティング構成ファイルなしでルートと動作を定義する非常にシンプルで表現力豊かな方法を提供します:
use Illuminate\Support\Facades\Route;
Route::get('/greeting', function () {
return 'Hello World';
});
デフォルトのルートファイル
すべてのLaravelのルートはroutesディレクトリにあるルートファイルで定義されます。これらのファイルは、Laravelによって自動的に読み込まれ、アプリケーションのbootstrap/app.phpファイルで指定された構成を使用しています。routes/web.phpファイルは、Webインターフェース用のルートを定義します。これらのルートにはweb ミドルウェアグループが割 り当てられており、セッション状態やCSRF保護などの機能が提供されます。
ほとんどのアプリケーションでは、routes/web.php ファイルでルートを定義することから始めます。routes/web.php で定義されたルートは、定義されたルートの URL をブラウザに入力することでアクセスできます。たとえば、次のルートには、ブラウザで http://example.com/user に移動することでアクセスできます:
use App\Http\Controllers\UserController;
Route::get('/user', [UserController::class, 'index']);
API ルート
アプリケーションが状態を持たない API も提供する場合は、install:api Artisan コマンドを使用して API ルーティングを有効にすることができます:
php artisan install:api
install:api コマンドは、Laravel Sanctum をインストールし、堅牢でシンプルな API トークン認証ガードを提供します。このガードは、サードパーティの API コンシューマ、SPA、またはモバイルアプリケーションの認証に使用できます。さらに、install:api コマンドは routes/api.php ファイルを作成します:
Route::get('/user', function (Request $request) {
return $request->user();
})->middleware('auth:sanctum');
routes/api.php のルートは状態を持たず、api ミドルウェアグループに割り当てられます。さらに、これらのルートには /api URI プレフィックスが自動的に適用されるため、ファイル内のすべてのルートに手動で適用する必要はありません。プレフィックスは、アプリケーションの bootstrap/app.php ファイルを変更することで変更できます:
->withRouting(
api: __DIR__.'/../routes/api.php',
apiPrefix: 'api/admin',
// ...
)
利用可能なルーターメソッド
ルーターを使用すると、任意の HTTP 動詞に応答するルートを登録できます:
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
時には、複数の HTTP 動詞に応答するルートを登録する必要があるかもしれません。match メソッドを使用してそれを行うことができます。また、any メソッドを使用してすべての HTTP 動詞に応答するルートを登録することもできます:
Route::match(['get', 'post'], '/', function () {
// ...
});
Route::any('/', function () {
// ...
});
同じ URI を共有する複数のルートを定義する際には、get、post、put、patch、delete、options メソッドを使用するルートを、any、match、redirect メソッドを使用するルートよりも先に定義する必要があります。これにより、受信したリクエストが正しいルートに一致することが保証されます。