HTTP Response 상태코드

Seongho·2023년 3월 7일
0

WEB

목록 보기
7/10

2xx (Success)

클라이언트의 요청을 서버가 성공적으로 처리한 상태



3xx (Redirection)

클라이언트가 서버에 요청을 했을 때, 서버가 요청을 완료하기 위해 클라이언트에서 추가적인 동작이 필요함을 알려줌

리다이렉션 (Redirection)

리다이렉션 : 웹 브라우저는 3xx 응답 결과에 Location 헤더가 있으면 Location 위치로 자동 이동한다.

  • 리다이렉션 종류

301, 308 - 영구 리다이렉션

301과 308의 차이는 301은 POST로 요청을 했을 때, 클라이언트가 응답을 받고 자동 리다이렉트를 할 때, GET으로 변경하여 요청을 보내고, 308에서는 POST로 요청을 보냈을 때, 클라이언트가 응답을 받고 리다이렉트를 할 때, 그래도 POST로 요청을 보낸다는 차이가 있다.

302, 307, 303 - 일시적인 리다이렉션

리소스의 URI를 일시적으로 변경하는 상태이다. 리다이렉트 시 요청 매서드가 GET으로 변경된다.

PRG (Post/Redirect/Get) 적용 전

예를 들어, 어떤 물건을 주문하고 POST 요청을 보냈는데, 웹 브라우저를 새로고침하면? 새로고침으로 인해 중복 주문이 일어날 수 있다.

PRG (Post/Redirect/Get) 적용 후

URL이 Post에서 GET으로 바뀌어 리다이렉트 된다. 따라서, 새로고침을 해도 GET으로 화면만 조회한다.

300, 304

?

4xx (클라이언트 오류)

클라이언트의 요청에 잘못된 문법 등으로 서버가 요청을 수행할 수 없는 상태로, 클라이언트의 요청 자체가 잘못됐기 때문에 재시도를 해도 실패한다.

400 Bad Request

  • 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없는 상태
  • 요청 구문, 메세지 오류
    ex) 요청 파라미터가 잘못됨, API 스펙이 안맞음(숫자를 보내야 하는데 문자를 보냄...)

401 Unauthorized

  • 클라이언트가 해당 리소스에 접근할 수 있는지에 대한 인증이 필요함.
  • 인증(Authentication)이 되지 않은 상태
    ++Authentication : 본인이 누구인지에 대한 확인.
    ++Authorization : 권한부여. Admin처럼 특정 리소스에 대한 접근 권한

403 Forbidden

  • 서버가 요청을 이해했지만 승인을 거부함
  • 인증 자격은 있지만 접근 권한이 불충분한 경우
    ex) Admin 등급이 아닌 사용자가 해당 리소스에 접근하는 경우

404 Not Found

  • 클라이언트가 요청한 리소스를 찾을 수 없음
  • 또는, 클라이언트가 권한이 부족한 리소스에 접근할 때 해당 리소스를 숨기고 싶을 때 사용

5xx (서버 오류)

  • 서버 문제로 오류가 발생
  • 서버에 문제가 있기 때문에 재시도로 성공할 수도 있음 (복구되면)
  • 5xx 오류는 정말 서버에 심각한 문제가 있을 때 발생시켜야 한다. 예를 들어, 19세 이상만 구매 가능한 상품을 15세가 구매하려 한다면, 이때 500대 오류를 내야 할까? 아니다. 이는 비지니스 로직상의 예외이기 때문에 비지니스 로직에서 처리해줘야 한다.

500 Internal Server Error

  • 서버 내부에 애매한 오류가 발생한 상태

503 Service Unavailable

  • 서비스 이용 불가
  • 서버가 일시적으로 과부화 되거나, 예정된 작업으로 잠시 요청을 처리할 수 없을 때
  • Retry-After 헤더 필드로 얼마 뒤에 복구되는지 보낼 수 있음.

** 인프런 HTTP 강의 (김영한) 참고

profile
Record What I Learned

0개의 댓글