Laravelでapi.phpとweb.phpの違いは?
Laravelでapi.phpとweb.phpの違いは?

Laravelでapi.phpとweb.phpの違いは?

작성자
ユミンユミン
카테고리
Dev.Log
작성일
2023년 07월 06일
태그
Laravel
Laravelで初めてプロジェクトを進めながら、api.phpweb.phpファイルに書くコードが似ていて、似たような機能を実行するのではないかという疑問が生じました。
notion image
 
その違いを理解するために調べた資料についてまとめてみたいと思います。
Laravelapi.phpweb.phpはルーティングを処理する二つの異なるファイルです。主な違いは下記の通りです。
  1. ミドルウェアグループ
    1. api.phpは基本的にapiミドルウェアグループを使用し、web.phpはwebミドルウェアグループを使用します。 apiミドルウェアグループは主にAPI認証、要求と応答に関連する機能を処理します。一方、webミドルウェアグループはセッション、クッキー、CSRF保護などウェブサイトに必要な要素を処理します。
  1. ルーティングの目的
    1. api.phpは主にRESTful APIのようなメカニズムを通じてデータを処理し、アプリケーションとの相互作用のためのパスを定義するために使用されます。一方、web.phpはユーザーにHTMLページを表示し、ウェブサイトとのインタラクションのためのパスを定義するために使用されます。
  1. 回答形式
    1. 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を使うほうがいいです。 このようにすると、アプリケーションのルーティング構造を明確に維持し、関連するミドルウェアを効果的に処理することができます。

댓글

guest