HTTP 상태 코드 완벽 이해

1xx부터 5xx까지 다섯 개의 상태 코드 클래스가 무엇을 뜻하는지, 상태 줄을 읽는 법과 디버깅에 쓰는 빠른 판단 규칙을 정리합니다.

HTTP 상태 코드는 서버가 클라이언트의 요청을 어떻게 처리했는지 세 자리 숫자로 요약해 알려주는 신호입니다. 모든 HTTP 응답의 첫 줄(상태 줄)에 코드와 짧은 사유 문구(reason phrase)가 함께 실립니다. 예를 들어 200 OK는 성공을, 404 Not Found는 리소스를 찾지 못했음을 뜻합니다. 사유 문구는 사람이 읽기 위한 참고용일 뿐이고, 프로그램이 실제 판단의 근거로 삼는 것은 숫자 코드입니다.

다섯 개의 클래스

상태 코드는 맨 앞자리 숫자로 다섯 개의 클래스로 나뉩니다. 앞자리만 봐도 응답의 큰 방향을 파악할 수 있도록 설계되어 있어서, 처음 보는 코드라도 대략적인 의미를 짐작할 수 있습니다.

상태 줄을 읽는 법

상태 줄은 HTTP-버전 상태코드 사유문구 형태입니다. 아래는 curl -i로 응답 헤더를 확인했을 때 보이는 전형적인 예입니다.

HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 42

{"error":"user not found","id":"u_92311"}

여기서 핵심은 앞자리(4)를 먼저 보고 방향을 잡는 것입니다. 4로 시작하니 클라이언트가 보낸 요청에 문제가 있다는 뜻이고, 뒤의 04가 구체적으로 '대상 리소스가 없음'을 가리킵니다. 서버가 잘못한 게 아니라 요청한 URL이나 식별자가 잘못되었을 가능성을 먼저 의심해야 합니다.

디버깅 빠른 판단 규칙

상태 코드는 표준(RFC 9110)이 정의한 공통 어휘이므로, 클라이언트와 서버가 서로의 내부 구현을 몰라도 소통할 수 있게 해 줍니다. 다만 표준을 자의적으로 해석하는 API도 많으므로, 코드는 1차 신호로 삼고 응답 본문의 상세 오류 메시지를 함께 확인하는 습관이 중요합니다.