はじめに
今回は私が研修で作成した掲示板サイトを題材に、HTTPメソッドの基本と実装への落とし込み方について、紹介します。
「GETとPOSTは分かるけど、DELETEってどう使うの?」というLaravel初学者の方に向ける意味でも、RESTfulな設計に基づく実践的な使い分けについて、まとめてみました。
本記事でわかること
- HTTPメソッドの役割とLaravelでの使い方
- 掲示板サイトにおける具体的なルーティングと処理例
- よくある質問&プラクティス例
①HTTPメソッドとその用途
②具体的なコード例
1.投稿一覧表示(GET)
Route::get('/posts', [PostController::class, 'index'])->name('posts.index');
- DBから全投稿を取得し、ビューに渡して表示する処理。
- データを変更しないため、安全なGETを使用。
2.投稿の新規作成(POST)
<form action="{{ route('posts.registrationcompleted') }}" method="POST">
@csrf
<textarea name="message"></textarea>
<button type="submit">投稿</button>
</form>
- ユーザーが入力した内容をDBに保存するため、POSTを使用。
- @csrfでCSRFトークンを付与しセキュリティ対策。
3.投稿削除(DELETE)
<form action="{{ route('posts.delete', $post->id) }}" method="POST">
@csrf
@method('DELETE')
<button type="submit">削除</button>
</form>
- LaravelではHTMLフォームからDELETEを直接送信できないため、@method('DELETE')で指定。
- コントローラ側でdestroy()メソッドにルーティング。
③よくある質問と回答
-
Q1.なぜGETで削除しないの?
A. セキュリティの観点から、副作用のある操作(削除や更新)をGETで実行すべきではないためです。
URLを共有したり、ブラウザがプリフェッチする際に意図しない動作を防ぐためにも、RESTに準拠したメソッドを使います。 -
Q2.PUTやPATCHは使わないの?
A. 今回のアプリでは編集機能を未実装のため使用していませんが、将来的に「投稿編集機能」を追加する場合は、PUTまたはPATCHを使用する予定です。
④まとめ
掲示板のようなCRUDアプリでも、HTTPメソッドの役割を正しく理解し、設計の意図に沿った使い分けをすることが非常に重要です。
LaravelはRESTfulなルーティングをサポートしているため、これらの原則に従うと読みやすく・保守しやすいコードを書くことができます。