Laravelにおけるweb.php
とapi.php
は、アプリケーションのルーティングファイルであり、それぞれ異なる種類のリクエストを処理するために使用されます。これらのファイルは、ルートの定義に使用されるが、異なる目的とミドルウェアを持っています。
web.php
web.php
ルートファイルは、ウェブブラウザからのリクエストを処理するために使用されます。ここに定義されたルートは、セッション状態、CSRF(クロスサイトリクエストフォージェリ)保護、クッキー暗号化など、典型的なウェブアプリケーションで必要とされるミドルウェアを自動的に適用します。これらのルートは、主にHTMLビューを返すために使用され、ユーザー認証、フォームの送信、CSRF保護が必要なウェブページのリクエストに適しています。
Route::get('/home', function () {
return view('home');
});
この例では、/home
URLにアクセスしたときに、home
ビューを返します。このルートはweb.php
に定義されているため、ウェブアプリケーションのセッションとCSRF保護が自動的に適用されます。
api.php
一方、api.php
ルートファイルは、APIリクエストを処理するために使用されます。これらのルートには、web.php
ルートに自動的に適用されるセッションやビュー関連のミドルウェアが適用されません。代わりに、api.php
に定義されたルートは通常、トークンベースの認証などのAPIミドルウェアを使用し、JSONなどのデータ形式でレスポンスを返します。これらのルートは、外部のアプリケーションやサービスからのリクエストに適しています。
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
この例では、/user
エンドポイントにアクセスした際に、認証済みのユーザー情報を返します。このルートはapi.php
に定義されているため、APIリクエスト用の認証ミドルウェアが適用されます。
まとめ
web.php
は、セッション、CSRF保護などのウェブアプリケーション特有の機能を必要とするルートに使用されます。api.php
は、トークン認証やステートレスなリクエストを処理するAPIエンドポイントに使用されます。
適切なルーティングファイルを使用することで、LaravelアプリケーションはウェブページリクエストとAPIリクエストを効果的に区別し、適切に処理することができます。