1xx : 처리중
거의 사용하지 않는다고 알고 있습니다
2xx : 요청의 정상 처리
- 200 OK 성공
- 201 리소스의 생성시 사용 → 헤더 필드에 리소스의 주소가 들어있다.
- 202 accessed 접수는 됐는데 아직 처리는 안된 경우 → 배치 처리에서 사용한다.
- 204 no content → 정상 요청이지만 payload 본문에 데이터가 필요없는 경우
3xx : 리다이렉션
요청 완료를 위해 추가 행동이 필요한 경우이다
리다이렉션?
Location header의 위치로 다시 이동하는 것
영구 리다이렉션
: 특정 리소스의 URI가 영구적으로 이동한 경우
- 301 Moved permanantly → 리다이렉트시 요청이 GET 본문은 제거 (May)
- 308 Permanent Redirect 위에꺼랑 기능은 같은데 요청과 본문은 유지
일시 리다이렉션
- 302 Found → 리다이렉트시 요청은 GET, 본문은 제거 (May)
- 307 Temporary Redirect 위에꺼랑 기능은 같은데 요청과 본문은 유지
- 303 See Other 리다이렉트시 요청 메소드가 무조건 GET으로
→ 는 언제 사용할까? PRG에서!
PRG란 POST→ REDIRECT→ GET의 약자이다.
Post로 주문 후에 웹 브라우저를 그대로 새로고침하면 중복 주문의 오류가 발생이 가능하다. POST로 주문 후 GET으로 리다이렉트 하도록 200ok가 아닌 302나 303으로 리다이렉트 하도록 한다.
특수 리다이렉션
: 결과 대신 캐시를 사용하는 방법
4xx : 클라이언트의 오류
: 오류의 원인이 클라이언트에게 있는 경우이다. 뭔가 잘못된 문법이 있거나, 요청한 파라미터가 잘못된 경우가 그 예이다. 여러번 재시도해도 똑같이 실패한다.
- 400 Bad Request 잘못된 요청시 e.g. 요청 parameter가 잘못될때
- 401 unauthorized → 인증이 되지 않은 경우
- 403 forbidden → 서버가 요청은 정상적으로 이해했는데 승인이 거부된 경우
- 404 not found → 요청한 리소스가 없는 경우
5xx : 서버의 오류
→ 서버가 정상 처리되지 않은 경우 → 이때는 재시도시 성공할 수도 있음
- 500 Internal Server Error 애매하면 대부분 이 에러
- 503 서비스 이용 불가 → 서비스가 과부하 또는 점검으로 일시적으로 다운된 경우