모든 개발자를 위한 HTTP 웹 기본지식 - 챕터 6

Chooooo·2022년 11월 12일
0
post-thumbnail

이 글은 강의 : 김영한님의 - "[모든 개발자를 위한 HTTP 웹 기본지식]"을 듣고 정리한 내용입니다. 😁😁


상태코드

HTTP API에 대해 클라이언트가 요청을 보내면 서버측에선 응답 메세지를 돌려주는데, 이 상태코드를 통해서 서버에서 어떻게 처리되었는지를 추측할 수 있다.

1XX(informational)

요청이 수신되어 처리중이다.

😌 이제 거의 사용하지 않는다.

2XX(Successful)

요청이 정상적으로 처리되었다.

🧨 200(OK)

  • GET과 같은 조회 요청에 성공적으로 응답하는 경우

🧨 201(Created)

  • POST와 같은 생성 요청으로 리소스가 생성이 정상적으로 된 경우에 해당한다.
  • 응답 메세지(헤더)에는 생성된 리소스 식별자가 Location 필드에 추가되어 응답된다.

🧨 202(Accepted)

  • 요청은 서버에서 받았으나 아직 처리가 되지 않은 경우
    ex) 배치 프로세스 등이 이에 해당한다.

🧨 204(No Content)

  • 서버에서 요청은 성공적으로 수행했지만, 응답시 메세지 바디에 담을 데이터가 없는 경우에 해당한다.

3XX(Redirection)

요청을 완료하기 위해 추가 행동이 필요(리다이렉션)

  • 응답 메세지 헤더에 Location 필드가 있는 경우 해당 위치로 자동 이동한다.(리다이렉션)

영구 리다이렉션 : 특정 리소스의 URI가 영구적으로 이동한다.
🧨 301(Moved Permanently)

  • 리다이렉트시 요청 메서드가 GET으로 변한다.
  • 본문이 변경될 수 있다.

🧨 308(Permanent Redirect)

  • 301 상태코드와 기능은 동일하다.
  • 응답 메세지의 본문과 요청 메서드가 유지된다.

일시 리다이렉션 : 리소스의 URI가 일시적으로 변경된다.

🧨 302(Found)

  • 리다이렉트시 요청 메서드가 GET으로 변한다.

🧨 307(Temporary Redirect)

  • 302와 기능은 같다.
  • 응답 메세지의 본문과 요청 메서드가 유지된다.

🧨 303(See Other)

  • 302와 기능은 같다.
  • 리다이렉트시 요청 메서드가 GET으로 변한다.

🧨 304(Not Modified)

  • 캐시를 목적으로 사용한다.
  • 클라이언트에 리소스가 수정되지 않았음을 알린다.
  • 304 응답은 응답에 메세지 바디를 사용하면 안된다.
  • 조건부 GET, HEAD 요청시 사용한다.

참고: PRG(Post Redirect Get) Pattern
페이지 새로고침시 동일 메서드(POST)로 서버에 전달되면 안되는 경우에 사용하는 패턴. 즉, 멱등성을 가지지 못하는 메서드의 경우에는 모두 해당 패턴을 사용하는게 좋다.
응답 코드로 302, 303등을 사용하면 자연스럽게 리다이렉션시 메서드가 GET으로 변경되며 문제를 해결한다.

4XX(Client Error)

클라이언트에서 잘못된 스펙으로 데이터를 보냈거나 인증, 인가가 만족되지 않아 서버에서 요청을 수행할 수 없다.

🎈 400(Bad Request)

  • 클라이언트가 보내는 포맷이나 데이터에 문제가 있을 경우 발생

🎈 401(Unauthorized)

  • 인증(Authentication)이 되지 않은 클라이언트에서 접근시 응답하는 상태코드이다.

🎈 403(Forbidden)

  • 인증(Authentication)이 되지 않은 클라이언트에서 접근시 응답하는 상태코드이다.

🎈 404(Forbidden)

  • 인증자격은 있지만, 해당 리소스에 접근할 권한이 없는 경우 응답하는 상태코드
    ex) 일반 회원이 관리자 페이지에 접근하려 하는 경ㅇ

5XX(Server Error)

서버에서 에러가 발생해 요청을 정상 처리할 수 없는 경우

🎈 500(Internal Server Error)

  • 서버 내부 문제로 오류가 발생한다.
  • 서버측의 로직에서 발생하는 대다수의 예외나 에러는 모두 500 오류를 낸다.
  • 정말 서버에 오류가 있을 때만 발생해야 한다. 비즈니스 로직과 같이 시스템이 아닌 로직상의 문제가 발생할 때 500 응답코드를 반환해서는 안된다.

🎈 503(Service Unavailable)

  • 서버에 트래픽 문제 혹은 점검으로 잠시 요청을 처리할 수 없는 경우 응답으로 사용된다.
  • Retry-After 헤더 필드로 얼마 뒤 복구되는지 보낼 순 있지만, 예측 불가능한 경우가 대부분이기에 잘 사용되지 않는다.
profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글