実際にE-Tagをチェックしてそのロジックを提供するのは、アプリケーション開発者の責任です。E-Tag
静的コンテンツのヘッダーを計算する方法しか知らないため、Webサーバーがあなたのために行うのは魔法ではありません。上記のシナリオを取り上げて、相互作用がどのように発生するかを分析してみましょう。
GET /projects/1
サーバーはリクエストを受信し、このバージョンのレコードのEタグを決定して、実際のコンテンツとともにそれを返します。
200 - OK
E-Tag: "412"
Content-Type: application/json
{modified: false}
クライアントにはE-Tag値が含まれているため、PUT
リクエストに含めることができます。
PUT /projects/1
If-Match: "412"
Content-Type: application/json
{modified: true}
この時点で、アプリケーションは次のことを行う必要があります。
- E-Tagがまだ正しいことを確認します: "412" == "412"?
- その場合は、更新して新しいEタグを計算します
成功の応答を送信します。
204 No Content
E-Tag: "543"
別のリクエストが来PUT
て、上記のリクエストと同様のリクエストを実行しようとした場合、サーバーコードが2回目に評価するときに、エラーメッセージを提供する必要があります。
- Eタグがまだ正しいことを確認します: "412"!= "543"
失敗したら、失敗応答を送信します。
412 Precondition Failed
これはあなたが実際に書かなければならないコードです。Eタグは実際には任意のテキスト(HTTP仕様で定義された制限内)にすることができます。数字である必要はありません。ハッシュ値にすることもできます。