HTTP 상태코드란

오호·2021년 4월 27일
2

네트워크

목록 보기
6/13
post-thumbnail

😅 처음 팀플을 진행했을 때 상태 코드에 대한 명확한 지식이 없어서 400번대 에러를 접하고 백엔드 팀원에게 찡찡거렸던 기억이 너무 부끄럽습니다 이번 글을 통해 HTTP 상태코드에 대해 자세히 알아보고 필자와 같은 실수를 하지 말았으면 하는 바램입니다 : )

1. HTTP 상태코드란?

1.1 HTTP 상태코드의 정의

클라이언트가 서버를 향해 리퀘스트를 보낼 때 서버에서 그 결과가 어떻게 되었는지 알려주는 것이 상태코드의 역할이다.

상태 코드는 일반적으로 3자리 숫자로 표현되는데 첫 번째 자리는 리스폰스의 클래스를 의미하고 나머지 2자리는 분류가 없습니다.

위에 보이는 이미지의 404 또한 HTTP 상태코드를 의미합니다.

1.2 HTTP 보는 법(❓)

구글 크롬의 개발자도구의 Network 탭에서 확인할 수 있습니다. 다음 이미지를 보면 쉽게 알 수 있습니다!

2. HTTP 상태코드의 의미

HTTP 상태 코드는 RFC2616에 있는 것만 40종류가 있고, 총 60 종류 이상이 있지만 실제로 개발할 때 사용되는 건 14종류 정도라고 합니다. 🤦‍♂️

2.1 100번대 (Informational)

100번대는 서버가 요청을 받아들여 처리중임을 나타내고 클래스는 Informational 입니다.

  • 100(계속) : 요청자는 요청을 계속해야한다.
  • 101(프로토콜 전환) : 요청자가 서버에 프로토콜 저노한을 요청했으며 서버는 이를 승인하는 중임을 나타냅니다.

2.2 200번대 (Success)

안심하세요 ⭐️

가장 흔히 볼 수 있는 코드로 클라이언트가 요청한 작업을 서버가 성공적으로 수행했다는 상태를 알려주는 코드입니다.

  • 200 OK는 리퀘스트가 정상으로 처리되었음을 알려줍니다.
  • 201 Created는 요청이 정상적으로 처리되었고, 그로 인해 리소스가 새롭게 생성되었다는 것을 의미한다. 회원가입 서비스가 이에 해당됩니다.
  • 204 No Content는 리퀘스트가 정상적으로 처리되었지만, 어떠한 엔티티 바디를 되돌려 보내서도 안됩니다. 클라이언트에서 서버에 정보를 보내는 것 외에 서버에서 보낼 정보가 없을 경우에 사용됩니다.

2.3 300번대 (Redirection)

300번대 코드들은 리다이렉션에 관한 상태를 의미합니다.
클라이언트가 요청한 리소스가 옮겨지거나 리소스가 삭제되었거나 정상적인 방법으로 더 이상 해당 리소스에 접근할 수 없고 다른 URL을 통해 그 리소스에 접근해야할 때 300번대 코드를 사용합니다.

  • 301 Moved Permanently는 가장 많이 사용되는 코드입니다. 브라우저는 자신의 요청에 대한 응답으로 301을 받으면 HTTP 헤더의 Location을 찾아보고 존재한다면 Location에 담긴 URL로 자동 리다이렉션합니다.

2.4 400번대 (Client Error)

긴장 💧

400번대 코드들은 클라이언트가 서버에 보낸 요청이 잘못된 경우를 나타냅니다.

  • 400 Bad Request는 필자도 가장 많이 마주친 400번대 코드입니다 😇
    간단히 말해 클라이언트에서 리퀘스트형식에 맞게 보내지 않았을 때, 예외처리가 안되었을 때 주로 발생합니다.

  • 401 Unauthorized는 인증되지 않은 사용자가 인증이 필요한 리소스를 요청하는 경우에 발생합니다. 서버가 401을 응답으로 보낼 경우 클라이언트에서는 로그인이 필요한 경우라고 판단하고 로그인 페이지로 리다이렉션 하기도 한다.

  • 403 Forbidden은 클라이언트가 접근이 금지된 리소스를 요청했을 때 발생합니다.

  • 404 Not Found는 리퀘스트한 리스폰스가 서버에 없음을 의미합니다.

2.4.1 401 vs 403

401은 로그인되지 않았을 때 주로 발생하지만, 403은 리소스를 요청한 사용자가 누구인지 신경쓰지 않고 클라이언트측에서 리소스에 접근하는 것 자체가 금지라는 뜻을 내포하고 있습니다.

2.5 500번대 (Server Error)

500번대 에러는 서버에서 리퀘스트를 처리하는 도중에 에러가 발생하였음을 나타내는 상태코드입니다.

  • 500 Internal Server Error는 서버에서 리퀘스트를 처리하는 도중에 알 수 없는 에러가 발생했다는 의미이고 에러의 원인을 클라이언트에게 알려주지 않습니다.

  • 502 Bad Gateway는 백엔드 어플리케이션이 죽은 상황에 발생합니다.

  • 503 Service Unavailable는 503은 서버가 요청을 처리할 준비가 되지 않았음을 의미합니다. 즉, 서버가 과부하 상태이거나 점검중일 떄 발생함을 나타냅니다.

profile
오호

0개의 댓글