はじめに
HTTPリクエストメソッドとは
HTTPリクエストメソッドは、クライアントがWebサーバーに対して「何をしたいのか」を伝えるための命令です。例えば、Webページを見たい時は GET
、フォームを送信する時は POST
というように、目的に応じて適切なメソッドを使用します。
HTTPリクエストメソッドの3つの特性
安全性
メソッドの安全性とは、サーバー上のデータを変更しない、読み取り専用の操作を指します。
-
GET
で記事の情報を取得する → 安全(データを変更しない) -
POST
で新しい記事を投稿すること → 安全ではない(データを変更する)
べき等性
べき等性とは、同じ操作を何度実行しても結果が変わらない性質のことです。
- 同じページを何度
GET
しても、内容は変わりません → べき等性 - 同じデータで何度
PUT
しても、結果は同じです → べき等性 -
POST
は毎回新しいリソースを作成する → べき等性ではない
キャッシュ可能
キャッシュ可能とは、そのリクエストの結果を保存しておき、同じリクエストが来た時に再利用できる性質です。
- 記事を取得する
GET
が頻繁に行われるサービスでレスポンスを早くしたいときにキャッシュとして保存することができる
主要なメソッド
GET: 情報の取得
Webページの表示する時など、あらゆる情報を取得するときに使用されるメソッドです。
- 特徴:
- 安全である
- べき等性を持つ
- キャッシュ可能
- URIのパラメータでリソースの指定をする
POST: 新規作成
新しい情報をサーバーに送信する時に使用します。新しい記事を投稿する場合や写真をアップロードする場合などに使用します。
- 特徴:
- 安全でない
- べき等性を持たない
- 基本的にキャッシュ不可
- リクエストボディにデータを含める
PUT: 更新(置換)
既存のリソースを完全に置き換える時に使用します。プロフィール情報全体を更新する場合などに使います。
- 特徴:
- 安全でない
- べき等性を持つ
- キャッシュ不可
- リソース全体の置換を行う
- 指定されたURIにリソースが存在しない場合は新規作成
PATCH: 部分更新
リソースの一部だけを更新する時に使用します。ユーザーの名前だけを変更する場合などに使用されます。
- 特徴:
- 安全でない
- べき等性を持たない可能性がある(実装による)
- キャッシュ不可
- リソースの一部のみを更新
DELETE
指定したリソースを削除する時に使用します。記事の投稿を削除する場合などに使用されます。
- 特徴:
- 安全でない
- べき等性を持つ
- キャッシュ不可
- 成功時は通常204 No Contentを返す
マイナーなHTTPメソッド
HEAD
GET
と似ているが、ボディー情報は返さず、ヘッダー情報のみを返します。
- 使用例:
- 大きなファイルをダウンロードする前にサイズを確認したい場合
OPTIONS
サーバーがサポートしている機能を確認するために使用します。
- 使用例:
-
CORS
のプリフライトリクエスト - 利用可能なHTTPメソッドの確認
- サーバーの設定確認
-
TRACE
リクエストの経路追跡のデバックに使用される。
攻撃を受けると認証情報が盗み出される危険がある
- セキュリティ上の理由で多くのサーバーでは無効化
- デバッグ目的以外での使用は推奨されない
CONNECT
プロキシを介したトンネル接続の確立に使用されます。
- 使用例:
- HTTPS通信のプロキシ経由での確立
- WebSocket接続の確立
参考