HTTP 상태 코드

Jayson·2025년 1월 2일
post-thumbnail

서버 개발 참여 경험과 학습 기록

프로젝트 참여 경험

서버 개발 프로젝트에 참여하여 API 명세서를 작성하고 iOS, Android 팀과 공유 및 피드백 과정을 거쳤습니다.
피드백 답변을 받아보니 명세서 작성이 명확하지 않거나, 정보 전달 과정에서 혼동이 생겼을 가능성을 깨닫고, 이를 계기로 HTTP 상태코드에 대한 학습과 정리를 진행하였습니다.


HTTP 상태코드 (HTTP Status Code)

핵심 개념

HTTP 상태코드는 클라이언트가 보낸 HTTP 요청에 대한 서버의 응답을 나타내는 코드로, 요청의 성공 또는 실패 여부를 판단할 수 있습니다.


HTTP 상태코드 분류

  1. 1xx (Informational): 조건부 응답
  2. 2xx (Successful): 성공
  3. 3xx (Redirection): 리다이렉션 완료
  4. 4xx (Client Error): 요청 오류
  5. 5xx (Server Error): 서버 오류

1xx (Informational): 조건부 응답

상태 코드요약설명
100Continue클라이언트가 서버로 보낸 요청에 문제가 없음을 의미하며, 다음 요청을 이어서 보내도 됩니다.

2xx (Successful): 성공

상태 코드요약설명
200OK요청이 성공적으로 수행되었음을 의미하며, 주로 GET 요청에 대한 응답으로 사용됩니다.
201Created요청이 성공적으로 수행되었으며, 새로운 리소스가 생성되었음을 의미합니다. (주로 POST 요청)
204No Content요청이 성공적으로 수행되었지만, 응답에 보낼 데이터가 없음을 의미합니다. (주로 DELETE 요청)

3xx (Redirection): 리다이렉션 완료

상태 코드요약설명
301Moved Permanently요청한 리소스의 URI가 영구적으로 변경되었음을 의미합니다.
302Found요청한 리소스의 URI가 일시적으로 변경되었음을 의미합니다.
304Not Modified리소스가 수정되지 않았음을 의미하며, 캐싱된 리소스를 사용합니다.
307Temporary Redirect302와 유사하나, HTTP 메서드를 유지해야 합니다.
308Permanent Redirect301과 유사하나, HTTP 메서드를 유지해야 합니다.

4xx (Client Error): 요청 오류

상태 코드요약설명
400Bad Request잘못된 문법 등으로 인해 요청이 유효하지 않음을 의미합니다.
401Unauthorized인증이 필요한 리소스를 비인증 사용자가 요청했음을 의미합니다.
403Forbidden클라이언트가 콘텐츠에 접근할 권한이 없음을 의미합니다. (서버가 클라이언트 정보를 알고 있음)
404Not Found요청한 리소스가 존재하지 않음을 의미합니다.
405Method Not Allowed리소스에 적합하지 않은 HTTP 메서드를 사용했음을 의미합니다.
429Too Many Requests클라이언트가 지정된 시간에 너무 많은 요청을 보냈음을 의미합니다.

5xx (Server Error): 서버 오류

상태 코드요약설명
500Internal Server Error서버에 오류가 발생하여 요청을 처리할 수 없음을 의미합니다.
503Service Unavailable서버가 유지보수 또는 과부하로 요청을 처리할 준비가 되지 않았음을 의미합니다.
504Gateway Timeout서버가 액세스 중인 다른 서버로부터 적시에 응답을 받지 못했음을 의미합니다.

HTTP 상태코드의 실제 활용 사례

  • 200 OK: GET 요청으로 사용자 프로필 정보를 성공적으로 가져왔을 때 사용.
  • 201 Created: POST 요청으로 새로운 계정을 생성한 후, 생성된 계정의 정보를 반환할 때 사용.
  • 204 No Content: DELETE 요청으로 데이터를 삭제했을 때 반환 데이터가 없을 경우 사용.
  • 304 Not Modified: 클라이언트 캐시된 리소스를 그대로 사용할 수 있을 때 사용.
  • 400 Bad Request: 클라이언트의 잘못된 입력(예: 필수 입력값 누락)으로 요청이 처리되지 않을 때 사용.
  • 401 Unauthorized: 인증되지 않은 사용자가 리소스에 접근하려 할 때 사용.
  • 403 Forbidden: 권한이 없는 사용자가 리소스에 접근하려 할 때 사용.
  • 404 Not Found: 요청한 리소스가 없을 때 사용.
  • 500 Internal Server Error: 예기치 못한 서버 에러가 발생했을 때 사용.

HTTP 상태코드와 RESTful API 설계

  • 상태코드는 RESTful API 설계에서 클라이언트-서버 간 의사소통을 명확히 하는 데 중요한 역할을 합니다.
  • 올바른 상태코드를 사용하는 것은 API 사용자가 오류 원인을 파악하고 문제를 해결하는 데 도움을 줍니다.

추가 학습 자료


상태코드 사용 시 주의사항

  • 상태코드의 오용 방지: 200 OK를 남용하지 말고, 상황에 맞는 상태코드를 사용하는 것이 중요합니다.
  • 5xx 에러 관리: 5xx 상태코드는 사용자 경험에 큰 영향을 미칠 수 있으므로, 로그 기록 및 알림 시스템을 활용해 빠르게 대응해야 합니다.
  • 표준 준수: 비표준 상태코드는 혼동을 초래할 수 있으므로, 가능한 한 표준 상태코드를 따르도록 합니다.
profile
Small Big Cycle

0개의 댓글