HTTPメソッドには、基本的に4種類存在する。
- GET
- POST
- PUT
- DELETE
これ以外にも存在するが、頻繁に使われるものはほとんどGETとPOSTである。
最後の方で解説しているが、PUTとDELETEも見かけることが少なく、
GETとPOSTが理解できていれば大体OKである。
CRUDとは
CRUDとは
- Create(作成)
- Read(読み込み)
- Update(更新)
- Delete(削除)
の頭文字であり、データ操作の基本はこの4つと言われている。
HTTPメソッドはこのCRUDに対して、
このように対応している。
Create | POST/PUT |
Read | GET |
Update | PUT |
Delete | DELTE |
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も理解しておくと良い