DevToolPal
ไทย
4xx ข้อผิดพลาดฝั่งไคลเอนต์

428 Precondition Required

ต้องมีเงื่อนไขล่วงหน้า

ความหมาย

เซิร์ฟเวอร์ต้องการให้คำขอเป็นแบบมีเงื่อนไข (If-Match เป็นต้น) เพื่อป้องกันการอัปเดตสูญหาย

สาเหตุที่พบบ่อย

  • PUT หรือ PATCH ที่ไม่มี If-Match บน API ที่บังคับ optimistic locking

วิธีแก้ไข

สำหรับไคลเอนต์หรือผู้เยี่ยมชม

GET resource เอา ETag ของมัน แล้วส่งใน If-Match พร้อมการอัปเดต

สำหรับผู้ดูแลเว็บไซต์หรือ API

อธิบายใน body ว่าต้องใช้ header ใด

ตัวอย่างการตอบกลับ

HTTP/1.1
HTTP/1.1 428 Precondition Required
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
Content-Type: application/problem+json

{
  "type": "about:blank",
  "title": "Precondition Required",
  "status": 428,
  "detail": "Send If-Match with the ETag you last read."
}

ข้อกำหนด

RFC 6585 §3

คำถามที่พบบ่อย

› ทำไม API ต้องการ If-Match

เพื่อป้องกันไม่ให้ไคลเอนต์สองตัวเขียนทับการเปลี่ยนแปลงของกันและกันโดยไม่รู้ตัว

› 428 หรือ 412

428: ไม่ได้ส่งเงื่อนไขมา 412: ส่งมาแต่ไม่เป็นจริง