Laravel
で初めてプロジェクトを進めながら、api.php
とweb.php
ファイルに書くコードが似ていて、似たような機能を実行するのではないかという疑問が生じました。
その違いを理解するために調べた資料についてまとめてみたいと思います。
Laravel
でapi.php
とweb.php
はルーティングを処理する二つの異なるファイルです。主な違いは下記の通りです。- ミドルウェアグループ
api.php
は基本的にapiミドルウェアグループを使用し、web.php
はwebミドルウェアグループを使用します。 apiミドルウェアグループは主にAPI認証、要求と応答に関連する機能を処理します。一方、webミドルウェアグループはセッション、クッキー、CSRF保護などウェブサイトに必要な要素を処理します。- ルーティングの目的
api.php
は主にRESTful APIのようなメカニズムを通じてデータを処理し、アプリケーションとの相互作用のためのパスを定義するために使用されます。一方、web.php
はユーザーにHTMLページを表示し、ウェブサイトとのインタラクションのためのパスを定義するために使用されます。- 回答形式
apiを使用して定義されたルートは通常JSON形式の応答を返します。
web.php
を使用して定義されたルートはHTMLビューを返すことができます。例を挙げましょう。
アプリケーションでレストランIDでレストラン情報を取得するには、
/restaurants/{id}
パスを使用することができます。クライアント側でJavaScriptでこのAPIにアクセスすることができ、fetch関数を使って次のように書くことができます。async function fetchRestaurant(id) { try { const response = await fetch(`/restaurants/${id}`); const restaurant = await response.json(); console.log(restaurant); } catch (error) { console.error(`Error fetching restaurant with id ${id}:`, error); } }
一方、
web.php
はユーザーにHTMLページを提供することだけに専念しています。 そのため、web.php
ファイルにはユーザービュー関連のルートだけを含めるほうがいいです。 最初のweb.php
ファイルにはウェルカムページに移動するコードが実装されていることがわかります。Route::get('/', function () { return view('welcome'); });
これにより、ウェブサイト訪問者がアドレスを訪問すると、ウェルカムページが表示されます。もし、アプリケーションのための追加ページを提供する場合は、
web.php
ファイルに新しいルートを追加し、関連ビューファイルを作成します。結論として、Laravelプロジェクトで
API機能
を実装する時はapi.php
を使用し、ウェブページ
を実装する時はweb.php
を使うほうがいいです。 このようにすると、アプリケーションのルーティング構造を明確に維持し、関連するミドルウェアを効果的に処理することができます。
댓글