[TIL] 250810_Network: HTTP 상태 코드(1)

지코·2025년 8월 10일
0

Today I Learned

목록 보기
86/94
post-thumbnail

✴️ HTTP 상태 코드

HTTP 상태 코드는 클라이언트가 서버로 요청을 보냈을 때 요청이 잘 처리되었는지, 오류가 났다면 어떤 종류의 오류가 발생한 건지에 대해 서버에서 클라이언트로 응답을 보낼 때 알려주는 기능이다.

크게 5가지 종류가 있는데, 요청이 수신되어 처리 중이라는 뜻인 1xx 코드는 잘 사용되지 않는다.
나머지 네 종류를 크게 구분하면 2xx 는 요청이 정상적으로 처리되었음을, 3xx 는 요청 완료를 위해 추가적인 행동이 필요함을, 4xx 는 오류가 발생했는데 클라이언트 쪽에서 발생했음을, 5xx 는 오류가 발생했는데 서버에서 데이터베이스, 혹은 통신 등의 문제가 발생했음을 나타낸다.

🤔 만약 클라이언트가 인식할 수 없는 상태 코드를 맞닥뜨린다면? 클라이언트는 상태 코드의 대분류를 통해 요청의 상황을 파악할 수 있다.
예를 들어 299와 같은 상태 코드를 만난다면, 정확히는 몰라도 2xx 이기 때문에 요청이 수신되어 처리 중이라는 뜻으로 파악할 수 있다는 말이다.

⚡️ 2XX

200 OK: 클라이언트의 요청을 성공적으로 처리.
가장 일반적으로 볼 수 있는 경우이다.

201 Created: 클라이언트의 요청을 통해 서버에서 무언가를 생성했을 때. (ex> POST)

위 예시와 같이 클라이언트로부터 POST를 통한 데이터 생성 요청을 받은 서버는 해당 데이터에 대한 리소스 URI를 생성하고, 응답 메세지와 함께 상태코드를 전송한다.

202 Accepted: 클라이언트의 요청은 정상적으로 접수되었으나, 처리가 완료되지 않았을 때.

주로 요청 접수 후 일정 시간이 지나야 요청을 처리하는 배치 처리 같은 곳에서 사용한다.

204 No Content: 서버가 클라이언트의 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없을 때.
이 경우에는 결과 내용이 없지만 204 메세지만으로도 요청 성공을 인식할 수 있다. 예를 들어 웹 문서 편집기에서 저장 버튼을 눌렀을 때 저장 버튼의 결과로 아무 내용이 없어도 되지만, 저장 요청이 성공했는지는 사용자에게 알려줘야 하기 때문에 이와 같은 상태 코드를 사용한다.

이외에도 많은 상태 코드들이 있지만 주로 사용하는 것들만 정리하였다.

⚡️ 3XX

3XX 코드는 리다이렉션과 관련된 상태 코드로, 클라이언트의 추가 조치가 필요하다.

리다이렉션(Redirection)

  • 웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, 자동으로 Location 위치로 이동시킨다.
    예를 들어 /event 경로가 /new-event 경로로 바뀌어서 리다이렉트되도록 설정해놓은 상황이 있다고 가정하자.
    클라이언트는 기존 경로인 /event 로 접속 요청을 보내면, 서버가 다음과 같은 응답 메세지를 보낸다.
    여기서 눈 여겨봐야 할 부분은 301 Moved Permanently 이다. 클라이언트에게 해당 페이지의 경로가 영구적으로 변경되었음을 알리며, Location 헤더를 통해 변경된 경로를 전달한다.
    서버의 301 응답 메세지를 받은 클라이언트는 Location 헤더에 있는 경로로 리다이렉트를 시도한다. 첫 요청과 같은 방식으로 서버에 /new-event 경로에 대한 요청 메세지를 보내면, 서버는 200 OK 와 함께 정상적으로 페이지를 응답한다.

리다이렉션의 종류로는 다음과 같이 3가지가 있다.

  • 영구 리다이렉션
    • 특정 리소스의 URI가 영구적으로 이동.
  • 일시 리다이렉션
    • 일시적인 변경.
    • 대표적으로 PRG: Post/Redirect/Get 가 있다.
    • ex> 주문 완료 후 주문 내역 화면으로 이동하는 경우.
  • 특수 리다이렉션
    • 결과 대신 캐시를 사용.

Reference

🎥 모든 개발자를 위한 HTTP 웹 기본 지식

profile
꾸준함이 무기

0개의 댓글