[개발 일기] 2025.04.28 - HTTP 상태코드

2025. 4. 28. 11:38·개발 일기

💡 개요

 

오늘은 HTTP 응답에 자주 사용되는 상태코드에 대해 정리 해보자.

 

 

 

🛠️ HTTP 상태코드

 

보통 상태코드는 예외가 발생했을 때 유용하게 사용된다.

 

 

물론 예외에 대한 메시지 또한 응답하지만 1차적으로 상태코드를 통해 어떤 예외가 발생했는지도 확인할 수 있다.

 

 

상태코드는 보통 프론트엔드에서 어떤 예외인지 구분할 때 사용된다.

 

 

메시지로도 구분이 가능하지만 String같은 문자열을 비교하는 것 보단 백엔드와 프론트엔드가 서로 약속된 Integer 형태의 상태코드를 통해 구분하는 것이 더 정확하다.

 

 

대표적으로 사용되는 HTTP 상태코드는 다음과 같다.

 

  • 100번대 : 정보(Informational)
    • 대표적으로 100 Continue가 있다. 100 Continue의 의미는 서버가 요청을 잘 받았고, 작업을 진행하고 있다는 의미이다.

  • 200번대 : 성공(Success)
    • 요청이 정상적으로 처리되었을 때 사용한다.

  • 300번대 : 리다이렉션(Redirection)
    • 요청을 보낸 URL이 변경되어 리다이렉션(재 요청)이 필요할 때 사용된다.
    • 보통 300번대 응답이 오면 응답 헤더에 새로운 위치(Location) 를 함께 전달하고, 클라이언트는 그 URL로 다시 요청을 보내야 한다.

  • 400번대 : 클라이언트 오류(Client Error)
    • 클라이언트(요청을 보내는 쪽)의 문제로 요청이 잘못됐다는 의미이다.

  • 500번대 : 서버 오류(Server Error)
    • 서버(응답하는 쪽)에서 문제가 생겼을 때 보내는 코드이다.

 

상태코드 의미 설명
200 OK 요청 성공 요청이 정상적으로 처리되었을 때 사용한다.
201 Created 생성 성공 요청이 성공적으로 처리되었으며, 새로운 리소스가 생성되었을 때 사용한다.
204 No Content 응답 본문 없음 요청은 성공했지만 응답할 데이터가 없을 때 사용한다.
301 Moved Permanently 서버 도메인 영구 이동 요청을 보낸 서버의 도메인이 변경되었을 때 사용한다.
302 Found 서버 도메인 임시 이동 요청을 보낸 서버의 도메인이 임시로 변경되었을 때 사용한다.
400 Bad Request 잘못된 요청 클라이언트의 요청이 잘못되어 서버가 요청을 처리할 수 없을 때 사용한다.
401 Unauthorized 인증 실패 인증이 필요한 요청에서 인증이 되지 않았을 때 사용한다. (예: 토큰이 없거나 만료된 경우)
403 Forbidden 권한 없음 인증은 되었지만 요청한 리소스에 접근할 권한이 없을 때 사용한다.
404 Not Found 리소스 없음 요청한 리소스가 서버에 존재하지 않을 때 사용한다.
409 Conflict 충돌 요청이 서버의 현재 상태와 충돌할 때 사용한다. (예: 중복된 데이터 등록)
500 Internal Server Error 서버 에러 서버 내부에 에러가 발생했을 때 사용한다. 주로 예기치 못한 오류를 의미한다.

 

 

위 상태코드는 현업에서 주로 사용되는 상태코드이다.

 

 

물론 백엔드팀과 프론트엔드팀의 API 설계 규칙이나 협의에 따라 커스텀하는 것도 충분히 가능하다.

 

 

왜냐하면 실제로 서버 내부에서 발생하는 상황은 매우 다양하기 때문이다.

 

 

저 상태코드만으로 모든 경우를 표현하기에는 수가 부족하다.

 

 

그래서 일부 팀에서는 400번대나 500번대 상태코드를 세분화하거나, 자체적으로 에러 코드를 추가로 정의해서 더 구체적인 상황을 전달하기도 한다.

'개발 일기' 카테고리의 다른 글

[개발 일기] 2025.04.30 - REST  (0) 2025.04.30
[개발 일기] 2025.04.29 - apt-get update 하는 이유  (0) 2025.04.29
[개발 일기] 2025.04.27 - Kafka + H2 포트 충돌  (0) 2025.04.27
[개발 일기] 2025.04.26 - Collections.synchronizedXXX() vs Concurrent Collections  (1) 2025.04.26
[개발 일기] 2025.04.25 - 맥북 쿠버네티스 서비스 접근  (0) 2025.04.25
'개발 일기' 카테고리의 다른 글
  • [개발 일기] 2025.04.30 - REST
  • [개발 일기] 2025.04.29 - apt-get update 하는 이유
  • [개발 일기] 2025.04.27 - Kafka + H2 포트 충돌
  • [개발 일기] 2025.04.26 - Collections.synchronizedXXX() vs Concurrent Collections
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring N
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기 N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[개발 일기] 2025.04.28 - HTTP 상태코드
상단으로

티스토리툴바