Skip to content

HTTP status code

HTTP 상태 코드는 요청 처리 결과를 표준화해서 전달하는 방법이다.

API를 설계할 때는 "성공/실패"만 나누는 것이 아니라, 왜 그런 결과가 나왔는지를 상태 코드와 응답 본문으로 함께 표현하는 것이 중요하다.


  • 1xx : 정보 응답
  • 2xx : 성공
  • 3xx : 리다이렉션
  • 4xx : 클라이언트 오류
  • 5xx : 서버 오류

자주 쓰는 2xx

상태코드이름의미
200OK요청 성공
201Created새 리소스 생성 성공
202Accepted요청은 수락했지만 처리는 아직 끝나지 않음
204No Content요청은 성공했지만 응답 본문이 없음

자주 쓰는 3xx

상태코드이름의미
301Moved Permanently리소스가 영구적으로 다른 URI로 이동
302Found일시적으로 다른 URI 사용
304Not Modified조건부 요청 결과, 캐시된 표현을 그대로 사용 가능

자주 쓰는 4xx

상태코드이름의미
400Bad Request요청 형식이나 값이 잘못됨
401Unauthorized인증 정보가 없거나 유효하지 않음
403Forbidden인증 여부와 별개로 접근이 허용되지 않음
404Not Found대상 리소스를 찾을 수 없음
405Method Not Allowed해당 리소스가 그 메서드를 지원하지 않음
406Not Acceptable클라이언트가 요구한 표현 형식으로 응답할 수 없음
408Request Timeout요청 대기 시간이 초과됨
409Conflict현재 리소스 상태와 충돌함
422Unprocessable Content형식은 맞지만 의미적으로 처리할 수 없음
429Too Many Requests허용량을 초과해 요청함

401403은 특히 자주 혼동한다.

  • 401: 아직 인증되지 않았거나 인증이 실패한 상태
  • 403: 인증은 되었더라도 권한이 부족하거나 서버가 거부하는 상태

자주 쓰는 5xx

상태코드이름의미
500Internal Server Error서버 내부 오류
502Bad Gateway게이트웨이/프록시가 상위 서버에서 잘못된 응답을 받음
503Service Unavailable서버가 일시적으로 요청을 처리할 수 없음
504Gateway Timeout게이트웨이/프록시가 상위 서버 응답을 제시간에 받지 못함