WIPIVERSE

409

HTTP 409 Conflict

409는 하이퍼텍스트 전송 프로토콜(HTTP)의 응답 상태 코드 중 하나로, 클라이언트 오류(4xx) 클래스에 속한다. 409 Conflict, 즉 "충돌"을 의미하며, 클라이언트가 보낸 요청이 서버가 보유한 대상 리소스의 현재 상태와 충돌하여 요청을 완료할 수 없음을 서버가 알려줄 때 사용된다.

정의 및 표준

409 상태 코드는 국제 인터넷 표준화 기구(IETF)의 RFC 문서에서 공식적으로 정의되었다. 초기에는 RFC 2616(1999년, HTTP/1.1)에 규정되었으며, 이후 RFC 7231(2014년, HTTP/1.1: Semantics and Content)로 개정되어 계승되었다. 또한 인터넷 할당 번호 기관(IANA)이 관리하는 공식 HTTP 상태 코드 레지스트리에 등록되어 있다.

발생 맥락

409 Conflict는 일반적으로 다음과 같은 상황에서 발생한다.

  • 리소스의 버전 충돌: 서버에 이미 존재하는 파일보다 오래된 버전의 파일을 업로드하는 경우 등 동시성(concurrency) 문제가 있을 때
  • 중복 데이터 생성: 이미 존재하는 사용자 아이디로 회원가입을 시도하는 경우와 같이 데이터 무결성을 위반하는 요청이 발생했을 때
  • 비즈니스 로직 위반: 이미 예약된 좌석을 다시 예약하려는 등 서버 측 규칙과 충돌하는 요청이 제출되었을 때
  • 상태 변경 충돌: 여러 사용자가 동시에 동일한 리소스를 수정하려는 경우

특히 PUT 요청과 같은 리소스 생성 또는 갱신 요청에서 자주 발생한다. 표준에 따르면 서버는 409 응답을 보낼 때 충돌에 대한 정보를 응답 본문에 포함해야 한다.

유사 상태 코드와의 구분

409와 유사한 클라이언트 오류 코드로는 400(잘못된 요청), 403(금지됨), 404(찾을 수 없음), 412(사전조건 실패) 등이 있다. 409가 리소스의 현재 상태와 요청 간의 충돌을 나타내는 데 초점을 맞추는 반면, 이들 코드는 각각 구문 오류, 권한 부족, 자원 부재, 사전조건 불충족과 같은 다른 오류 상황을 나타낸다.

표준 문서 명칭

  • RFC 2616(구판): Hypertext Transfer Protocol – HTTP/1.1
  • RFC 7231(현행): Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content

참고 문헌

  • MDN Web Docs, "409 Conflict - HTTP"
  • Wikipedia, "HTTP 상태 코드"
  • RFC Editor, "RFC 7231"
둘러보기

더 찾아볼 만한 주제

    전체 문서 보기