0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Laravel】web.phpとapi.phpの違いを解説

Last updated at Posted at 2024-08-27

はじめに

web.phpapi.php
2つのルーティングファイルが存在していることを知りました。わざわざ別で定義する理由がわからなかったため調べてみました。

違いは何?

2つの違いをいくつかの観点からみていきます。

web.phpについて

用途
・ブラウザでアクセスするウェブページのルートを定義するのに適している

特徴
・セッション管理とCSRF保護が有効になっており、ステートフルな通信に適している

ユースケース
・ログインページ、ユーザー登録ページ、ダッシュボードなどに使われる

api.phpについて

用途
・外部からの HTTP リクエストを受けて値を返却する場合に使用

特徴
・セッション管理とCSRF保護が無効であり、ステートレスな通信に適している

ユースケース
・フロントエンドアプリケーション(SPAなど)からのAPIリクエストを処理など

CSRFとは

CSRFは、サイバー攻撃のこと。Webアプリケーションの脆弱性を利用し、ユーザーが意図しない形で処理を実行する攻撃。

ステートフルとステートレス

ネットワークにおける「ステートフル」と「ステートレス」とは、通信セッションの状態管理に関する概念である。

ステートフルとは

「記憶力のあるコンピューター」のようなもの。話したことを覚えていて次に話すときにその情報を使う。

例:オンラインショップの、カートのように記憶してくれている

ステートレスとは

「記憶力のないコンピューター」のようなもの。話をしたことを覚えていない。

例:自動販売機のようにジュースを買うたびにおかねを入れて選ぶ必要がある

Laravel 11では存在しなくなった

現時点(2024/08/19)における、最新バージョンのLaravel11では、最初から存在しないみたいですね。

ドキュメントをみてみたら以下のコマンドで追加できることがわかりました。

$ php artisan install:api

おわりに

ファイル名 セッション管理 CSRF保護  ステートフル   ステートレス 
web.php ⚪︎ ⚪︎ ×
api.php × × × ⚪︎

web.php は、ブラウザからのリクエストを扱い、セッションやクッキーを利用するルートに向いています。

一方で、api.php は、APIリクエストを扱い、ステートレスなリクエスト処理に向いています。

それぞれの特徴を活かして使い分けていきましょう

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?