HTTP 상태코드 소개
• 1xx (Informational): 요청이 수신되어 처리중
• 2xx (Successful): 요청 정상 처리
• 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요
• 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음
• 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함
만약 389처럼 클라이언트가 인식할 수 없는 상태코드를 보낸다면
클라이언트는 3xx, 즉 상위 상태코드로 해석해서 처리한다
1xx 요청 처리중 코드는 거의 사용되지 않는다.
2xx - 성공
200 OK
- 요청 성공
- 매우 자주 사용됨
201 Created
- 요청 성공해서 새 리소스 생성됨
- Location 헤더 필드에 리소스 경로 포함함
202 Accepted
- 요청 접수되었으나, 처리 완료 전
- 요청 접수 후 1시간 뒤에 실행되는 배치 프로세스 같은 곳에서 사용됨
204 No Content
- 요청대로 수행했지만, 응답 페이로드에 보낼 데이터가 없음
- 인터넷 웹문서 저장 등과 같은 곳에서 사용됨
3xx - 리다이렉션
요청을 완료하기 위해 클라이언트의 추가 조치 필요
클라이언트는 3xx 응답 Location 헤더의 위치로 다시 요청을 보냄
영구 리다이렉션
특정 리소스의 URI가 영구적으로 이동됨
원래의 URL은 사용하지 않음, 검색 엔진에서 URL을 바꿈
301 Moved Permanently - 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음(MAY)
308 Permanent Redirect - 요청 메서드와 본문 유지
일시 리다이렉션
리소스의 URI를 일시적으로 변경함
실수로 같은 주문이 두 번 들어가지 않도록, 주문 완료 후 결과 페이지로 보낼 때 등에 사용
검색 엔진에서 URL을 변경하지 않음
PRG: Post/Redirect/Get
302 Found - 요청 메서드가 GET으로 변하고, 본문이 변할 수 있음(MAY)
307 Temporary Redirect - 요청 메서드와 본문 유지
308 See Other - 요청 메서드가 GET으로 변경
특수 리다이렉션
결과 대신 캐시를 사용
304 Not Modified
- 캐시가 서버에 리소스 변경 여부를 묻고, 변경되지 않았을 때 사용.
- 캐시는 자신의 리소스를 보내게 된다.
- 응답에 바디가 포함되지 않는다.
4xx - 클라이언트 오류
요청 메시지의 문법이 잘못된 상황 등에 의해 서버가 요청을 수행할 수 없음
오류의 원인이 클라이언트에 있어 똑같은 요청을 보내면 실패함
400 Bad Request - 파라미터가 잘못되었거나, API 스펙이 맞지 않는 등 잘못된 요청을 함
401 Unauthorized - 인증되지 않음, 로그인 혹은 권한에 문제가 있음
403 Forbidden - 인증은 했지만, 접근 권한이 불충분함 (관리자가 아님 등)
404 Not Found - 요청 리소스가 서버에 없거나, 권한이 부족한 클라이언트에게 리소스를 숨김
5xx - 서버 오류
서버 문제로 오류 발생
같은 메시지로 재시도하면 성공할 수도 있음
500 Internal Server Error - 서버 내부 오류, 애매하면 500 보내기
503 Service Unavailable - 서버 과부하 또는 예정된 점검 등으로 서비스 불가 상태 Retry-After 헤더로 얼마 뒤 복구되는지 알릴 수 있음
5xx 오류는 심각한 서버 내 오류일 때에만 보내야 한다.
참고: 김영한 - 모든 개발자를 위한 HTTP 웹 기본지식
'Spring boot' 카테고리의 다른 글
[HTTP] HTTP 헤더 - 캐시와 조건부 요청 (2) | 2021.11.16 |
---|---|
[HTTP] HTTP 일반 헤더 (0) | 2021.11.09 |
[HTTP] HTTP 메서드 활용 (0) | 2021.10.27 |
[HTTP] HTTP 메서드 (0) | 2021.10.13 |
[HTTP] http 기본 (0) | 2021.10.06 |