HTTP 웹 기본 지식 - 5일차(HTTP 상태코드)
상태 코드란 클라이언트가 보낸 요청의 처리 상태를 응답해서 알려주는 기능
보통 100 ~ 500번대 가 존재하는데 백의 자리의 숫자에 의미가 있음
1xx (Informational)-> 요청이 수신되어 처리 중 ( 거의 잘 안 쓰임)
2xx (Successful)-> 요청 정상 처리
3xx (Redirection) -> 요청을 완료하려면 추가 행동이 필요
4xx (Client Error) -> 클라이언트 오류
5xx (Server Error) -> 서버 오류
1xx
-> 거의 사용을 하지 않는다.
2xx(Successful)
클라이언트의 요청이 정상적으로 처리가 되면 200번대의 상태 코드가 뜬다.
- 200 OK
- 201 Created
- 202 Accepted
- 204 No Content
200 OK
보통 클라이언트가 메서드 GET으로 요청했을 때 서버에서 값과 함께 보내준다.
201 Created
Created 란 말처럼 요청을 했을때 새로운 게 생성되었다는 것을 의미한다.
이때 생성된 리소스는 응답의 Location 헤더 필드로 식별된다 (위 빨간색 화살표 표시)
202 Accepted
요청이 접수되었으나 처리가 아직 완료되지 않은 것으로 배치 처리 같은 곳에서 사용 ( 요청 접수 후에 1시간 뒤에 배치 됨)
204 No Content
서버가 요청을 성공적으로 수행했지만 Response 할 데이터가 없음
3xx (Redirection)
요청을 완료하기 위해 추가적인 조치가 필요하다는 상태 코드이다.
- 300 Multiple Choices
- 301 Moved Permanently
- 302 Found
- 303 See Other
- 304 Not Modified
- 307 Temporary Redirect
- 308 Permanent Redirect
Redirection 은 Location 헤더가 있으면 Location 위치로 이동하라는 것을 의미한다.
클라이언트는 위치로 이동후에 서버에 GET요청을 보내서 데이터를 받고 사용자에게 보여준다.
리다이렉션의 종류로는 3가지가 존재한다.
- 영구 리다이렉션 - 특정 리소스의 URI가 영구적으로 이동
- 일시 리다이렉션 - 일시적인 주문 변경
- 특수 리다이렉션 - 결과 대신 캐시를 사용
이렇게 존재한다.
영구 리다이렉션
- 리소스의 URI가 영구적으로 이동, 원래의 URL를 사용 안 할 때
-301 Moved Permanently
리다이렉트시 요청 메서드 GET으로 변하고 본문이 제거될 수 도 있음(MAY)
-308 Permanent Redirect
301과 기능은 같으나 메서드가 변하지 않음
일시적인 리다이렉션
- 리소스의 URI가 일시적으로 변경
-302 Found
리다이렉트시 요청 메서드 GET으로 변하고 본문이 제거될 수 도 있음(MAY)
-307 Temporary Redirect
302와 기능은 같음
기능은 같으나 메서드가 변하지 않음
-303 See Other
302와 기능은 같음
메서드가 GET으로 무조건 변경
PRG -> Post/Redirect/Get
예를 들어 POST로 주문이 요청하고 웹 브라우저를 새로고침 하면 중복 주문이 될 수 있음 이러한 행위를 방지할 수 있음
기타 리다이렉션
-300 Multiple Choices -> 안 씀
-304 Not Modified
캐시를 목적으로 사용(클라이언트에게 리소스가 수정되지 않았음을 알려줘서 캐시로 리다이렉트 하게 끔 함) 로컬 캐시를 사용하게 하므로 응답에 메시지 바디를 포함하면 안 된다.
4xx (Client Error)
말 그대로 클라이언트에 오류가 있음
클라이언트에서 오류가 발생했으므로 해당 방식으로 재시도했을 때 성공할 수 없음
ex) 요청 파라미터가 잘못되었거나, API 스펙이 맞지 않을 때
- 401 Unauthorized
- 403 Forbidden
- 404 Not Found
이렇게 있음
-401 Unauthorized
클라이언트가 해당 리소스에 대한 인증이 필요함
ex) 로그인되어 있어야 확인할 수 있거나 등등
-403 Forbidden
서버가 요청을 이해했지만 거부했을 때
ex) 관리자페이지 접근할 때 일반 회원 자격으로는 접근할 수 있음 (어드민 등급만 접근이 가능함)
-404 Not Found
요청 리소스가 서버에 없거나 서버가 클라이언트로부터 리소스를 숨기고 싶을 때 발생
5xx (Server Error)
서버 문제로 발생
서버에 문제가 있으므로 서버가 복구되거나 등등의 이유로 문제가 해결되면 같은 값을 보낼을때, 문제가 해결될 수 있음
- 500 Internal Server Error
- 503 Service Unavailable
-500 Internal Server Error
서버 내부 문제로 오류 발생
애매하면 500 오류가 뜸
-503 Service Unavailable
서버가 과부하나 예정된 작업으로 지금 요청을 처리할 수 없음
Retry-After 헤더 필드로 얼마 뒤에 복구되는지 보낼 수 도 있음