If-Matchヘッダの概要

HTTPの「If-Match」ヘッダは、条件付きのリクエストを送る際に使われる。 サーバー上のリソースの更新や削除を行う前に、対象のリソースが特定バージョンと一致していることを確認するために使用する。 クライアントは、以前のレスポンスから受け取ったETag(リソースのバージョン情報識別子)を使って、条件付きリクエストを送信する。
 

If-Matchヘッダの使用方法

If-Matchヘッダの使用方法は、以下の通りである。
  1. クライアントは、リソースに対するGETリクエストを送信する。
  1. サーバーは、リソースの内容とETagを含むレスポンスを返す。
  1. クライアントは、受け取ったETagを使って、条件付きリクエスト(例:PUT、DELETE)を送信する。この際、「If-Match」ヘッダにETagの値を設定する。
  1. サーバーは、「If-Match」ヘッダの値と現在のリソースのETagを比較する。
      • 値が一致する場合、リクエストを実行し、新しいETagを含むレスポンスを返す。
      • 値が一致しない場合、リクエストを実行せず、412 Precondition Failedのステータスコードを返す。
 
この方法により、リソースの更新や削除が、期待したバージョンのリソースに対して行われることが確実になる。

If-Matchヘッダの使用例

以下は、HTTPの「If-Match」ヘッダを使用した条件付きPUTリクエストの例である。
このリクエストでは、「If-Match」ヘッダにETagの値「123456789abcdef」が設定されている。サーバーは、リソースの現在のETagがこの値と一致する場合にのみ、リクエストを実行する。