こんにちはー!むちょこです。
「Laravelはどこでルーティングするの?」というご質問をいただいたので、記事でお答えします!
ディレクトリ
Laravelのルーティングファイル群は、Laravelプロジェクトのルートディレクトリ下にあるroutesディレクトリ内に置きます。
インストール時点で4つのファイルが予め用意されているので、基本的にはそれを使用すると便利です。
project
├─ app
├─ artisan
│
│
├─ routes
│ ├─ api.php
│ ├─ channels.php
│ ├─ console.php
│ └─ web.php
この4つのファイルについて、それぞれの用途をそれぞれ簡単にご紹介します!
routes/web.php
web.phpには、 Webからアクセスしてほしいルートを定義します。
Route::get('login', 'Auth\LoginController@showLoginForm');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout');
ここで定義したルートはwebミドルグループウェアに割り当てられ、セッション状態やCSRF保護などの機能が提供されます。例えばPOSTメソッドで定義したルートはCSRF保護され、正しいCSRFトークンを含まないリクエストは拒否されます。
詳しい書き方等については、こちらをご覧ください?
https://readouble.com/laravel/6.x/ja/routing.html
routes/api.php
api.phpには、APIとしてステートレスに使いたいルートを定義します。
Route::group(['middleware' => 'api'], function() {
Route::get('/products', 'RecommendController@index');
Route::post('/user_choice', 'RecommendController@userChoice');
Route::get('/genders', 'MasterController@getGenders');
Route::get('/events', 'MasterController@getEvents');
});
ここで定義したルートはapiミドルグループウェアに割り当てられ、URIに /api というプレフィックスがつきます。
routes/channels.php
channels.phpは、ブロードキャストのチャンネルを登録するために使います。
Broadcast::channel('order.{orderId}', function ($user, $orderId) {
return $user->id === Order::findOrNew($orderId)->user_id;
});
例にあるコードのように、プライベートチャンネルをリッスンできる権限を定義することができます。
コードはこちらの記事から引用しました。ブロードキャストについても知りたい方はぜひご覧ください?
https://readouble.com/laravel/6.x/ja/broadcasting.html
routes/console.php
console.phpは、コンソールベースのエントリポイントを定義するために使います。
Artisan::command('build {project}', function ($project) {
$this->info("Building {$project}!");
});
コードはこちらの記事から引用しました。Artisanについても知りたい方はぜひご覧ください?
https://readouble.com/laravel/6.x/ja/artisan.html
ちなみにですが、クラスでコンソールコマンドを定義することも可能です。興味がある方はこちらの記事をご覧ください?
Artisanコマンドの自作方法とテストコード