HTTP 상태코드
JeongSeulho
2024년 12월 20일
준비중...
클립보드로 복사
200번대(성공)
- 200 OK : 요청 성공
- 201 Created : 요청 성공해 새로운 리소스 생성
- Location 헤더로 생성된 리소스의 URI 전달
- 202 Accepted : 요청 접수됨, 아직 완료되지 않음
- 요청 후 일정 시간 이후에 처리되는 경우
- 204 No Content : 요청 성공, 응답 바디로 보낼 데이터가 없음
300번대(리다이렉션, 클라이언트의 추가적인 처리가 필요)
- 리다이렉션은 어떤 응답에 브라우저가 자동으로 다시 요청을 보내는 것
- 브라우저는 300번대 응답의 Location 헤더가 있으면, 해당 Location으로 자동 이동 즉, GET 요청(리다이렉트)
영구 리다이렉션
- 특정 리소스의 URI가 영구적으로 이동
/users
->/members
로 변경됨
- 301 Moved Permanently : 리다이렉션 요청 메서드가 GET으로 변경, body가 제거될 수 있음
- 308 Permanent Redirect : 리다이렉션 요청 메서드와 body가 유지됨
영구 리다이렉션 예시
- 유저의 GET
/users
요청 - 301 Moved Permanently 응답, Location 헤더에
/members
전달 =>users
리소스가 영구적으로/members
로 이동했다고 알림 - 브라우저는 자동으로 GET
/members
요청(리다이렉션 요청)
일시적 리다이렉션
- 리소스의 URI가 일시적으로 변경
- 302 Found : 리다이렉션 요청 메서드가 GET으로 변경, body가 제거될 수 있음
- 307 Temporary Redirect : 리다이렉션 요청 메서드와 body가 유지됨
- 303 See Other : 리다이렉션 요청 메서드가 GET으로 변경
브라우저의 새로고침
- 브라우저의 새로고침은
현재 페이지를 다시 불러오는 것
- 대부분의 경우 현재 주소창의 URL에 GET 요청으로 다시 요청
- 만약 현재 페이지가 POST 요청으로 반환된
text/html
응답이라면,현재 페이지를 다시 불러오기
위해 POST 요청을 보냄- 새로고침에서 POST를 2번 보내는 것을 방지하기 위해
PRG(Post/Redirect/Get)
패턴 사용
- 새로고침에서 POST를 2번 보내는 것을 방지하기 위해
일시적 리다이렉션 예시(PRG 패턴)
- 유저의 POST
/order
요청 - 302 Found 응답, Location 헤더에
/order-result
전달 - 브라우저는 자동으로 GET
/order-result
요청(리다이렉션 요청) => 이후 새로고침에도 POST 요청을 보내지 않음
기타 리다이렉션
- 304 Not Modified : 클라이언트에게 리소스가 수정되지 않았음을 알림(캐시 쓰라고 알림)
- 304 응답은 응답 바디가 없음
- 조건부 GET, HEAD 요청에 대한 응답
400번대(클라이언트 오류)
- 400 Bad Request : 클라이언트가 잘못된 요청을 보냄
- 요청 파라미터가 잘못되었거나, API 스펙이 맞지 않음
- 401 Unauthorized : 해당 리소스에 접근하기 위한 인증이 필요함(인증되지 않음, 로그인 필요)
- 403 Forbidden : 해당 리소스에 접근 권한이 없음, 인가되지 않음
- 404 Not Found : 요청한 리소스를 찾을 수 없음 또는 클라이언트에 리소스 숨김
500번대(서버 오류)
- 500 Internal Server Error : 서버 내부 오류(사유는 다양)
- 503 Service Unavailable : 서버가 일시적인 과부하 및 점검으로 잠시 요청을 처리할 수 없음
- Retry-After 헤더로 얼마 뒤에 복구되는지 알리기 가능