HTTPメソッド4種類(GET,POST,PUT,DELETE)について概要と違いを理解する

httpのイメージ画像 HTTP

HTTPメソッドには、基本的に4種類存在する。

  • GET
  • POST
  • PUT
  • DELETE

これ以外にも存在するが、頻繁に使われるものはほとんどGETとPOSTである。

最後の方で解説しているが、PUTとDELETEも見かけることが少なく、
GETとPOSTが理解できていれば大体OKである。

CRUDとは

CRUDとは

  • Create(作成)
  • Read(読み込み)
  • Update(更新)
  • Delete(削除)

の頭文字であり、データ操作の基本はこの4つと言われている。

HTTPメソッドはこのCRUDに対して、
このように対応している。

CreatePOST/PUT
ReadGET
UpdatePUT
DeleteDELTE

GETメソッド

GETはリソースを取得するためのメソッド。

普通にWebページを見たいときは、
「Webページを取得したいです」というGETリクエストを送信し、
Webページのhtmlなどを受け取る。

以下のURLにGETリクエストを送信した場合、
ユーザー一覧を取得するという意味になる。

"https://example.com/user"

また、GETでは大抵リクエストパラメータによって
リソースの取得方法をコントロールできる。

例えば、

"https://example.com/user"

ユーザー一覧を取得できる一方で

"https://example.com/user?id=1"

といった具合でURLにパラメータを付与すると、
ユーザーIDが「1」のユーザーのみを取得できる。

APIを作った人によって、どのようなパラメータを取ることができるのかは
異なるが、大抵の場合このような思想で作成されている。

POSTメソッド

POSTはリソースを作成するためのメソッド。

POSTは

  • 機密性の高いデータ
  • 大量のデータ(リクエストパラメータに収まらない)

を送信するのに優れている。

そのため、

  • お店の予約
  • ユーザーなどの登録
  • ツイートする
  • ブログを投稿する
  • レビューを投稿する

といった場面で利用されている。

予約、登録は言い換えると

  • 予約データベースに予約データを追加する
  • ユーザーデータベースにユーザーデータを登録する

ということになるので、これはリソースの作成に該当している。

PUTメソッド

PUTはリソースの更新/作成を行うためのメソッド。

リソースの作成はほとんどPOSTが使われることが多いため、
ほぼ更新用のメソッドという認識でも十分である。

  • 既存ユーザー情報の更新
  • 既存ブログ記事の更新
  • 以前に投稿したレビューの更新

といった場面で利用される。

DELETEメソッド

DELTEはリソースの削除を行うためのメソッド。

  • ユーザーの削除
  • ブログ記事の削除
  • ツイートの削除
  • レビューの削除

などに利用される。

PUT/DELTEはフロントエンドではあまり見かけない

PUTメソッドやDELETEメソッドはあまり見かけることはなく、
一般的なWebサイトでは、実際POSTメソッドによって更新や削除も行っているものが多い。

例えば、上記で「ツイートの削除」においてDELTEメソッドを使っていると書いたが、
Chromeのディベロッパーツールで確認すると、
POSTによって削除されていることが分かる。
(裏側のAPIではDELETEを使っているかもしれない)

これには以下のような事情がある。

  • HTTPメソッドの機能面で見ると、PUTもDELETEもPOSTで代用可能
  • htmlのformがPUT/DELETEをサポートしていない
  • PUT/DELETEそのものに認証機能がなく、セキュリティ的に気を使うことが多い(HTTP1.1)
  • ただし、ユーザーから見えないWebアプリケーション同士の通信や、
    外部に公開していないAPIにはPUTやDELETEがしっかり定義されていることは多い

まとめ

  • GETは取得、POSTは送信
  • 非エンジニアならGETとPOSTだけ分かっていれば大体OK
  • エンジニアならPUT/DELETEも理解しておくと良い
タイトルとURLをコピーしました