LaravelでPUTとPATCHの違いと使い分けが不要な理由を分かりやすく解説

Laravel 入門講座

データを更新する時には、PUTまたはPATCHメソッドを使います。ただ、この2つのメソッドは使い分ける必要はありません。

使い分け不要な理由と2つのメソッドの違い、そしてLaravelでの設定方法を解説していきますね。

「なぜ2つも似たようなメソッドがあるの?」

「間違ったほうを使ったら、デメリットとかある?」

と疑問に感じたら、読んでください。

Junko
Junko

わたしも、この2つの違いが最初よく分かりませんでした。

本記事を読んでスッキリしてもらえたら嬉しいです。

PUTとPATCHとは?いつ使われる?

まずPUTとPATCHとは何か?から説明しますね。

多くのWebアプリケーションでは投稿内容のCreate(作成)・Read(読み出し)・Update(更新)・Delete(削除)という処理が必要になります。

この処理は、頭文字を取ってCRUD(クラッド)と呼びます。

【CRUD処理】

① C create 新規作成
② R read 読み出し
③ U update 更新
④ D delete 削除

PUTとPATCHメソッドは、この中でUpdate(更新)処理を行う時に使われます。2つの違いは、次のとおりです。

  • PUT:全体を更新
  • PATCH:部分的に更新

PUTとPATCHの使い分け不要だと判断できる理由

上記のような違いがあるものの、PUTにせよPATCHにせよ、HTTPメソッドを指定しただけでは処理は変わりません。

Laravelの場合はフォームを通じて送信された内容は、ルート設定を経て、コントローラーで処理が行われます。

つまりコントローラーの処理が同じなら、どちらのメソッドでも同じ結果となります。

Junko
Junko

HTTPメソッド変えただけじゃ、処理内容は変わらないってことですね。

こういった意味で、わたしは、更新時にPUTとPATCHを使い分ける必要はないと判断しています。

PUTもPATCHも同じ【更新】のためのメソッドですし。

ただ結論としては、使い分けても分けなくても、どちらでもOK

ただもちろん、ちゃんと使い分けたい場合は、使い分けてください。

結論としては、あなたのお好みで良いと思います。

Junko
Junko

大雑把な結論でなんですが

補足として、処理負荷の関係で使い分けたほうが効率が良い場合もあります。

たとえば、ものすごい大きなファイルを更新するときなど。一部を更新するか、全体を更新するかで処理の負荷が大きく変わってきますよね。

ただこの場合には、PUTとPATCHというHTTPメソッドだけを変えるのではなく、それぞれ異なる処理をコントローラーに設定しておく必要があります。

Laravelの中でのPUTとPATCHの設定方法

では次に、Laravelの中でのHTTPメソッドの設定方法を説明しますね。

Laravelでは、リソースコントローラを使う時は、Route::resource を使ってルート設定をします。

【リソールコントローラー使用時のルート設定例】

すると次のようなルート設定が自動で作成されます。

【リソースコントローラのルート設定】

ご覧頂いているとおり、更新処理はPUT/PATCHとなっています。

つまり、Laravelで更新処理を行う場合には、ルート設定はPUTでもPATCHでもどちらでもOK、ということになります。

ビューファイル(blade.php) 内のフォーム で、どちらかの処理を指定します。選択した処理は、@methodの後の括弧の中に入れておきます。

【フォーム例(PATCHを入れた場合)】

リソースコントローラを使わない時は、各ルート設定でHTTPメソッドを指定します。このときも、PUTでもPATCHでもお好きな方を指定できます。

Laravelでの注意点:ビューファイルとルート設定のHTTPメソッドは統一しましょう。

ただこの時ひとつ、注意点があります。

個別にルート設定を行うときは、ビューファイルとルート設定で、HTTPメソッドを統一するようにしてくださいね。

たとえばビューファイル(blade.php) 内のフォーム でPATCHメソッドを使っていたら、ルート設定でもPATCHメソッドを使って合わせる必要があります。

【フォームでPATCHを指定】

【ルート設定でもPATCHを指定】

ここで、たとえばビューファイルではPUTメソッド、ルート設定ではPATCHメソッドを使うと、エラーになります。

Junko
Junko

メソッド間違いには、ご注意を。

The PUT method is not supported for this route. Supported methods: PATCH.
「このルートにはPUTメソッドはサポートされません。PATCHメソッドにしてね」

さいごに

今回解説したPUTとPATCHの使い分けについて、Laravelの公式ドキュメントに説明がないか探してみたものの、明確なものは見当たりませんでした。

Laravel自体の機能ではないためだと思います。

そこで本記事で解説してみました。

「使い方がわかってスッキリした!」と思って頂けたら嬉しいです。

なお今回はCRUD処理やリソースコントローラーなど色々紹介しましたが、これらはLaravelでWebアプリを作る上で必須の知識になります。

実際にどう使っていくかは、「Laravelの教科書」という学習サイトで紹介しています。学習を通じて、CRUD処理を実践しつつ会員制のWebアプリを作成していきます。

登録は無料です。興味があれば、下記をクリックして詳細を見てくださいね。

Laravelの教科書の詳細を見る

Laravel 入門講座

【Laravelの教科書・無料プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック
【個別サポート実施中】

「本ブログに記載の方法を試してみたけれど、うまくいかない」「コードを見てほしい」という方のために、有償でメールサポートいたします。以下のボタンをクリックして相談フォームにアクセスして下さい。

詳しく見る

Twitter始めました。
40代からプログラミング!

コメント

タイトルとURLをコピーしました