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