의미
업데이트 손실을 막기 위해 서버가 요청이 조건부(If-Match 등)이기를 요구합니다.
흔한 원인
- 낙관적 잠금을 강제하는 API에 If-Match 없이 PUT이나 PATCH를 보냄
해결 방법
클라이언트 또는 방문자라면
리소스를 GET해 ETag를 얻고, 업데이트할 때 If-Match에 넣어 보내세요.
사이트나 API 운영자라면
어떤 헤더가 필요한지 본문에서 설명하세요.
응답 예시
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."
} 명세
자주 묻는 질문
› API가 If-Match를 요구하는 이유는?
두 클라이언트가 모르는 사이에 서로의 변경을 덮어쓰는 것을 막기 위해서입니다.
› 428과 412의 차이는?
428: 전제 조건을 보내지 않음. 412: 보냈지만 실패함.