意義
請求與資源目前的狀態衝突,例如重複資料或同時編輯。
常見原因
- 建立已存在的紀錄(電子郵件或名稱必須唯一)
- 編輯的資源已被他人變更
- 類似 git 的版本或狀態衝突
解決方法
用戶端或訪客
取得最新狀態,解決衝突或改用其他值,然後重試。
網站或 API 的維護者
在本文中說明衝突的內容。對於使用 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 嗎?
不應該;衝突通常需要人來決定。請先重新整理資料。