LaravelのAPIルーティング(api.php)とweb.phpの違いを初心者向けにやさしく解説
生徒
「Laravelを勉強していたら、api.phpとweb.phpというファイルが出てきました。これは何が違うんですか?」
先生
「どちらもルーティングを書く場所ですが、使い道がはっきり分かれています。用途を理解すると迷わなくなりますよ。」
生徒
「API開発では、どちらを使えばいいんでしょうか?」
先生
「API専用ならapi.phpです。画面を表示する通常のWebサイトはweb.phpを使います。」
生徒
「パソコンをほとんど触ったことがなくても理解できますか?」
先生
「郵便物の配達に例えると、とても分かりやすくなります。」
1. そもそもルーティングとは?
ルーティングとは、どのURLにアクセスされたら、どの処理を行うかを決める仕組みです。 Laravelでは、このルールをまとめて管理します。
たとえば、住所に手紙が届くと郵便配達員が家まで届けてくれます。 URLは住所、ルーティングは配達ルールのようなものです。 正しい住所に、正しい荷物を届けるために必要な仕組みです。
Laravelでは、ルーティング専用のファイルが用意されており、
その代表的なものが web.php と api.php です。
2. web.phpとは何をするファイルか
web.phpは、画面を表示するWebサイト用のルーティングを書く場所です。 ブラウザでアクセスして、HTML画面を表示する場合に使われます。
たとえば、ログイン画面やお問い合わせページなど、 人が目で見て操作するページは、web.phpが担当します。
web.phpのルーティングは、 クッキーやセッションという仕組みが自動で使われます。 セッションとは、利用者の状態を一時的に覚えておく仕組みです。 ログイン状態を保つために使われます。
3. api.phpとは何をするファイルか
api.phpは、API専用のルーティングを書く場所です。 画面を表示せず、データだけを返す処理を担当します。
APIは、人ではなくプログラムが利用します。 スマートフォンアプリや別のシステムが、 データを受け取るために使われます。
api.phpに書いたルーティングは、
自動的にURLの先頭に /api が付きます。
これにより、Web用とAPI用のURLが分かりやすく分離されます。
4. web.phpとapi.phpの大きな違い
一番大きな違いは、用途と役割です。 web.phpは人が見る画面用、 api.phpはデータをやり取りするAPI用です。
また、api.phpではセッションを使わない設計になっています。 これは、APIが毎回独立して動作するためです。 APIは「毎回必要な情報を渡す」前提で作られます。
web.phpは、ログイン状態を覚える必要があるため、 セッションが有効になっています。 この違いを理解することが、API開発の第一歩です。
5. api.phpに書く基本的なルーティング例
ここでは、api.phpに書くシンプルな例を見てみましょう。 APIでは、文字やJSONデータを返すことが多いです。
Route::get('/hello', function () {
return response()->json([
'message' => 'こんにちは'
]);
});
この例では、APIにアクセスすると、 JSON形式のデータが返ってきます。 画面表示は行われません。
{"message":"こんにちは"}
6. web.phpに書くルーティングの役割
web.phpでは、HTML画面を表示する処理を書くのが基本です。 ブラウザで直接アクセスされることを前提にしています。
フォームの入力画面や、結果表示ページなど、 ユーザーが操作する部分はweb.phpにまとめます。 APIと役割を分けることで、コードが整理されます。
Laravelでは、最初からこの2つを分けて用意してくれているため、 初心者でも正しい構成を学びやすくなっています。
7. なぜapi.phpとweb.phpを分けるのか
ルーティングを分ける理由は、 役割を明確にして、管理しやすくするためです。 すべてを一つにすると、後から見たときに混乱します。
APIとWeb画面は、使われ方がまったく違います。 そのため、最初から別々に管理することで、 バグや設定ミスを防ぎやすくなります。
LaravelのAPI開発では、 api.phpを使うという基本ルールを覚えるだけで、 正しい構成に自然と近づけます。