ความหมาย
คำขอขัดแย้งกับสถานะปัจจุบันของ resource เช่น ข้อมูลซ้ำหรือการแก้ไขพร้อมกัน
สาเหตุที่พบบ่อย
- สร้างระเบียนที่มีอยู่แล้ว (อีเมลหรือชื่อที่ต้องไม่ซ้ำ)
- แก้ไข resource ที่คนอื่นเปลี่ยนไปแล้ว
- ความขัดแย้งของเวอร์ชันหรือสถานะแบบ git
วิธีแก้ไข
สำหรับไคลเอนต์หรือผู้เยี่ยมชม
ดึงสถานะล่าสุด แก้ความขัดแย้งหรือเลือกค่าอื่น แล้วลองใหม่
สำหรับผู้ดูแลเว็บไซต์หรือ API
อธิบายใน body ว่าอะไรขัดแย้ง สำหรับ optimistic locking ด้วย ETag สถานะ 412 แม่นยำกว่า
ตัวอย่างการตอบกลับ
HTTP/1.1
HTTP/1.1 409 Conflict
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
Content-Type: application/problem+json
{
"type": "about:blank",
"title": "Conflict",
"status": 409,
"detail": "A user with this email already exists."
} ข้อกำหนด
คำถามที่พบบ่อย
› อีเมลซ้ำควรใช้ 409 หรือ 422
ใช้ได้ทั้งคู่ 409 เหมาะกับความขัดแย้งกับข้อมูลที่มีอยู่ 422 เหมาะกับเฟรมเวิร์กตรวจสอบข้อมูล ให้ใช้อย่างสม่ำเสมอ
› ไคลเอนต์ควรลองซ้ำ 409 อัตโนมัติไหม
ไม่ควร ความขัดแย้งมักต้องการการตัดสินใจ ให้รีเฟรชข้อมูลก่อน