API를 개발하다 보면 리소스 생성(Create) 시 중복 데이터 처리에 대한 고민이 자주 발생합니다. 이때 자주 등장하는 HTTP 상태 코드가 바로 409 Conflict
입니다. 이 글에서는 409 Conflict
의 의미와, 중복 처리와 관련된 개념들을 정리합니다.
409 Conflict
란?409 Conflict는 클라이언트의 요청이 서버의 현재 상태와 충돌할 때 사용하는 HTTP 상태 코드입니다.
POST /projects
{
"title": "AI 리서치"
}
409 Conflict
유니크 제약 조건이란, 특정 필드의 값이 시스템 내에서 중복되면 안 되는 규칙입니다.
보통 아래와 같은 필드에 적용됩니다:
email
)id
)title
) 등단순히 ConflictError
같은 일반화된 이름보다는 구체적인 에러명이 더 좋습니다.
일반적인 이름 | 명확한 이름 |
---|---|
ConflictError | DuplicateProjectNameError |
ValidationError | EmailAlreadyExistsError |
에러의 원인을 구체적으로 표현하면 디버깅과 클라이언트 처리 모두 쉬워집니다.
중복 제한은 비즈니스 규칙입니다. 시스템 설계 전에 반드시 확인해야 합니다.
예시 질문들:
이처럼 유니크 여부는 상황에 따라 달라지므로, 도메인 요구사항 확인이 필수입니다.
409 Conflict
는 중복뿐만 아니라 다양한 충돌 상황에 사용될 수 있습니다