Laravelのルーティングの仕組みと一番簡単な使い方
前回ビューとコントローラという概念が出てきました。
ここで学ぶルーティングは、実はビューとコントローラの間に位置するものになります。
ユーザからの色々なリクエストをLaravelのルーティングで受け取って、適切なコントローラへと受け渡します。
図で表すとこんなイメージですね。
今回はコントローラは使わず、いろいろなリクエストをしてルーティングされているかどうか見ていきましょう。
まだLaravelをインストール・動かす環境が出来ていない方は以下を参考に作成してみてください。
Laravel9+Sail(Docker)で環境構築してみた
上記記事では、LaravelのSailというツールを使って簡単に環境構築する方法を紹介しています。対象はMac OSですが、PCにDockerさえ入っていればWindowsでも簡単に構築出来ると思います。
簡単なルーティングを実践
ルーティングは以下のweb.phpというファイルに記述していきます。
routes/web.php
<?php
Route::get('/', function () {
dd("ハロー"); // ddはvar_dump();してexit();という感じで、文字を表示して処理を停止させます。便利なので覚えましょう
});
ここで行っているのはGETメソッドで「/」にアクセスした時、「ハロー」と表示するということを行っています。
ブラウザ等で「/」にアクセスすると以下の通り表示されます。vagrantで環境を作っている人は「http://192.168.33.10:8080/」で、自分のPC上で環境を作った人は「http://localhost:8080/」でアクセス可能です。
ごく基本的なルーティング
3つだけごく基本的なルーティングついて抑えておきましょう。この入門編ではこのくらい理解しておけば問題ありません。
routes/web.php
<?php
Route::get('/users', function () {
dd("ユーザ一覧");
});
Route::get('/users/{name}', function ($name) {
dd("ユーザは$name");
});
Route::post('/users', function () {
dd("ユーザ登録");
});
1つ目
まず1つ目ははじめの例とやっていることは同じで、「/users」にアクセスしたら、「ユーザ一覧」という文字を表示するというものです。
これは簡単ですね。
2つ目
では2つ目。
これは「/users/〇〇」に来た〇〇を$nameという変数にいれて、文字を表示するというものです。
試しにブラウザで「/users/takeshi」とアクセスしてみましょう。以下のようになると思います。
ユーザの詳細ページなどを作る時、ユーザIDをよくこの形式で渡したりします。
3つ目
3つ目はどうでしょうか?
postが出てきました。1つ目2つ目はgetとなっています。このgetやpostというのはhttpメソッドと呼ばれ、getは主に参照系(ユーザ一覧ページ)、postは登録系(ユーザの登録)などに使われたりします。
ブラウザでURLにアクセスした時すべてのリクエストはgetとなります。postを使用するにはhtmlでフォームを作ったり、Javascriptでpost通信を行ったりする必要があります。
<form action="/users" method="post">
<button>送信</button>
</form>
実はLaravelはセキュリティの観点から、上のフォームではPOST通信が拒否されます。
トークンを仕込んで...みたいなことをするのですが、また後の記事で詳しく解説します。
ここでは、POSTを使ったルーティングも出来るということだけ覚えておきましょう。
ちなみにこの他にもhttpメソッドは以下などがあります。
- get
- post
- delete
- put
- patch
- options
よく使うのはget、post、delete、putくらいです。とりあえずgetとpostだけ覚えておけばOKです。
最後に3つのリクエストとルーティングをまとめると以下の動きになります。どういうリクエストがどういう動きをするのかしっかりと理解しましょう。
公式ドキュメントがとてもわかり易いので、もっと詳しく知りたい場合は以下を参考にしてください。
https://readouble.com/laravel/9.x/ja/routing.html
次回はルーティングからコントローラを使用していきます。