ルーティング
基本的なルーティング
最も基本的な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
メソッドを使用するルートよりも先に定義する必要があります。これにより、受信したリクエストが正しいルートに一致することが保証されます。