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

409 Conflict

ขัดแย้ง

ความหมาย

คำขอขัดแย้งกับสถานะปัจจุบันของ 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."
}

ข้อกำหนด

RFC 9110 §15.5.10

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

› อีเมลซ้ำควรใช้ 409 หรือ 422

ใช้ได้ทั้งคู่ 409 เหมาะกับความขัดแย้งกับข้อมูลที่มีอยู่ 422 เหมาะกับเฟรมเวิร์กตรวจสอบข้อมูล ให้ใช้อย่างสม่ำเสมอ

› ไคลเอนต์ควรลองซ้ำ 409 อัตโนมัติไหม

ไม่ควร ความขัดแย้งมักต้องการการตัดสินใจ ให้รีเฟรชข้อมูลก่อน