เป็นผู้พัฒนาแอปพลิเคชันเพื่อตรวจสอบ E-Tag และระบุตรรกะนั้น ไม่ใช่เรื่องวิเศษที่เว็บเซิร์ฟเวอร์ทำเพื่อคุณเพราะรู้เพียงวิธีการคำนวณE-Tag
ส่วนหัวสำหรับเนื้อหาคงที่ ดังนั้นเราจะนำสถานการณ์ของคุณข้างต้นมาพิจารณาว่าการโต้ตอบควรเกิดขึ้นได้อย่างไร
GET /projects/1
เซิร์ฟเวอร์ได้รับการร้องขอกำหนด E-Tag สำหรับบันทึกรุ่นนี้ส่งคืนพร้อมเนื้อหาจริง
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-Tag ใหม่
ส่งคำตอบสำเร็จ
204 No Content
E-Tag: "543"
หากมีคำขออื่นมาและพยายามดำเนินการPUT
คล้ายกับคำขอด้านบนครั้งที่สองที่รหัสเซิร์ฟเวอร์ของคุณทำการประเมินคุณจะต้องรับผิดชอบต่อข้อความแสดงข้อผิดพลาด
- ตรวจสอบว่า E-Tag ยังคงถูกต้อง: "412"! = "543"
เมื่อล้มเหลวส่งการตอบสนองความล้มเหลว
412 Precondition Failed
นี่คือรหัสที่คุณต้องเขียน อันที่จริง E-Tag สามารถเป็นข้อความใด ๆ (ภายในขีด จำกัด ที่กำหนดไว้ในข้อมูลจำเพาะ HTTP) ไม่จำเป็นต้องเป็นตัวเลข มันสามารถเป็นค่าแฮชได้เช่นกัน