728x90
🌿 HTTP 상태 코드
클라이언트가 보낸 HTTP요청에 대한 서버의 응답 코드
상태 코드에 따라 요청의 성공/실패 여부를 판단할 수 있다.
분류
- 1xx (Informational) : 정보
- 2xx (Successful) : 성공
- 3xx (Redirection) : 리다이렉션 완료
- 4xx (Client Error) : 요청 오류(클라이언트 오류)
- 5xx (Server Error) : 서버 오류
모든 상태 코드에 대한 내용은 여기에!
🌲1xx (Informational) : 정보
요청을 받았으며 프로세스를 계속 진행합니다.
상태 코드 | 요약 | 설명 |
100 | Continue | 클라이언트가 서버로 보낸 요청에 문제가 없으니 다음 요청을 이어서 보내도 된다는 것을 의미 이미 요청이 완료되었다면, 이 응답은 무시해도 된다. |
🌳 2xx (Successful) : 성공
요청을 성공적으로 받았으며 인식했고 수용하였습니다.
the action was successfulyy received, and accepted
요청을 정상적으로 처리했음
상태 코드 | 요약 | 설명 |
200 | OK | 요청이 성공적으로 되었음을 의미 성공의 의미는 HTTP 메소드에 따라 달라진다 - HEAD : 개체 헤더가 메시지 바디에 있음 - GET : 리소스를 불러와서 메시지 바디에 전송되었음 - PUT or POST : 수행 결과에 대한 리소스가 메시지 바디에 전송되었음 - TRACE : 메시지 바디는 서버에서 수신한 요청 메시지를 포함하고 있음 |
201 | Created | 요청이 성공적으로 수행되었으며, 그 결과로 새로운 리소스가 생성되었음을 의미 주로 POST 요청 또는 일부 PUT 요청에 대한 응답 |
202 | Accepted | 요청은 접수되었지만, 처리는 완료되지 않았음(바로 응하여 행동할 수 없음을 의미) 배치 프로세스와 같이 요청 접수 후 일정 시간이 지난 후 요청을 처리하는 경우의 응답 |
203 | Non-Authoritative Information |
돌려받은 메타 정보 세트가 오리진 서버의 것과 일치하지 않지만, 로컬이나 서드 파티 복사본에서 모아졌음을 의미함 200 OK 응답이 반드시 우선됨 |
204 | No Content | 요청이 성공적으로 수행되었고, 응답 payload에 보낼 데이터 없음 주로 DELETE 요청에 대한 응답 |
205 | Reset Content | 서버가 요청을 성공적으로 처리했지만, 콘텐츠를 표시하지 않음 클라이언트가 콘텐츠를 재설정할 것을 요구 |
206 | Partial Content | 복수의 스트림을 분할 다운로드를 하고자 범위 헤더를 전송했기 때문에 사용됨 서버 GET 요청의 일부만 성공적으로 처리했음을 의미 |
🌵 3xx (Redirection) : 리다이렉션 완료
요청 완료를 위해 추가 작업 조치가 필요합니다.
Further action must be taken in order to complete the request
요청 완료를 위해 추가 작업 조치가 필요함 을 의미, 주로 리다이렉트를 할 때 많이 사용된다.
해당 응답을 받으면,
브라우저는 HTTP 헤더에 들어있는 Location 필드를 찾아 해당 필드가 존재할 경우, Location 필드에 담긴 URL로 자동으로 리다이렉트합니다.
상태 코드 | 요약 | 설명 |
300 | Multiple Choices | 요청에 대한 하나 이상의 리소스가 존재함을 의미 |
301 | Moved Permanently | 요청한 리소스의 URI가 변경되었음을 의미 |
302 | Found | 요청한 리소스의 URI가 일시적으로 변경되었음을 의미 |
303 | See Other | 요청한 리소스를 다른 URI에서 GET 요청을 통해 얻어야할 때의 응답 |
304 | Not Modified | 캐시 목적으로 사용됨 리소스가 수정되지 않음을 의미 해당 응답을 받으면, 클라이언트는 서버로부터 리소스를 재전송 받지 않고, 캐싱된 리소스를 사용 |
307 | Temporary Redirect | 302 Found와 동일한 의미 가짐 클라이언트는 HTTP 메소드를 유지한 채 요청을 재송신할 필요가 있음을 의미 |
308 | Permanent Redirect | 리소스가 HTTP 응답 헤더의 Location: 에 명시된 영구히 다른 URI에 위치하고 있음을 의미 301 Moved Permanetly와 동일한 의미 가짐 사용자 에이전트가 반드시 HTTP 메소드를 변경하지 말아야 하는 점만 다르다. 클라이언트는 HTTP 메소드를 유지한 채 요청을 재송신할 필요가 있음을 의미 |
리다이렉션 종류
- 영구적인 리다이렉션(301, 308)
- 301은 리다이렉트시킬 때 HTTP 메서드를 GET으로 바꾸고, body 없이 전송
- 308은 전송 받은 HTTP 메서드를 유지하고, body도 유지하여 전송
- 일시적인 리다이렉션(302, 307, 303)
- 302는 리다이렉트시킬 때 HTTP 메서드를 GET으로 바꾸고, body 없이 전송
- 307은 전송 받은 HTTP 메서드를 유지하고, body도 유지하여 전송
- 303은 리다이렉트시킬 때 HTTP 메서드를 무조건 GET으로 바꿈
- 302가 애매모호에서 303으로 명확하게 정의되었다고 함
- 일시적인 리다이렉션(302, 303)을 사용하면, POST -> GET 요청으로 변경하여 페이지 새로고침 등의 동작으로 POST 요청 중복 처리되는 것을 방지할 수 있습니다.
- ex. 상품 주문 진행 -> 상품 주문 결과 화면으로 이동
- 특수 리다이렉션(304)
- 캐싱된 리소스를 사용
🌾 4xx (Client Error) : 요청 오류
요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다.
The request contains bad syntax or cannot be fulfilled
클라이언트 오류(잘못된 문법 등)로 인해 서버가 요청을 처리할 수 없음
상태 코드 | 요약 | 설명 |
400 | Bad Request | 잘못된 문법 등으로 인해 서버가 요청을 이해할 수 없음을 의미 |
401 | Unauthorized | '비인증'을 의미 인증되지 않은 사용자가 인증이 필요한 리소스를 요청하는 경우 보통 로그인이 필요한 API를 비로그인 사용자가 호출했을 때 사용 |
403 | Forbidden | 클라이언트가 콘텐츠에 접근할 권한을 가지고 있지 않음 401과 다른점은 서버가 클라이언트가 누구인지 알고 있다는 것 보통 특정 IP나 국가가 차단되어 있는 사이트에 접속을 시도한 경우에 사용된다. |
404 | Not Found | 요청한 리소스가 존재하지 않음을 의미 인증되지 않은 클라이언트로부터 리소스를 숨기기 위해 403 대신 이 응답을 전송하기도 함 |
405 | Method Not Allowed | 현재 리소스에 맞지 않는 메서드를 사용했음을 의미 ex) GET 요청만 허용되는데 POST 요청을 한 경우 |
406 | No Acceptable | 알맞은 컨텐츠 타입이 없음을 의미 서버의 리소스가 클라이언트의 HTTP 헤더에 들어있는 Accept 필드에 명시된 콘텐츠 타입이 아닌 경우의 응답 |
408 | Request Timeout | 요청에 응답하는 시간이 너무 오래 걸림을 의미 |
409 | Conflict | 요청이 현재 서버의 상태와 충돌될 때의 응답 |
412 | Precondition Failed | 클라이언트의 헤더에 있는 전제조건은 서버의 전제조건에 적절하지 않음 |
413 | Payload Too Large | 요청이 너무 커서 서버가 처리할 수 없을 때의 응답 서버는 연결을 끊거나 Retry-After 헤더 필드로 돌려보낼 것임 |
429 | Too many Requests | 클라이언트가 지정된 시간에 너무 많은 요청을 보낸 경우의 응답 |
🌴 5xx (Server Error) : 서버 오류
서버가 명백히 유효한 요청에 대해 충족을 실패했습니다.
The server failed to fulfill an apparently valid request
서버 오류로 인해 서버가 정상 요청을 처리하지 못함을 의미
상태 코드 | 요약 | 설명 |
500 | Internal Server Error |
서버에 오류가 발생하여 응답할 수 없음 서버에 오류가 발생했으나 처리 방법을 알 수 없을 경우 |
501 | Not Implement | 클라이언트 요청에 대한 서버의 응답 수행 기능이 없음을 의미(기능을 지원하지 않음) |
502 | Bad Gateway | 서버가 게이트웨티로부터 잘못된 응답을 수신했음을 의미 서버의 부모 서버에서 오류가 발생한 경우의 응답 보통 서버에 접속하는 사용자가 많아 과부하될 때 발생한다. |
503 | Service Unavailable | 서버가 요청을 처리할 준비가 되지 않음 일반적으로 유지보수를 위해 작동이 중단되거나 과부하가 걸린 경우 |
504 | Gateway Timeout | 서버가 게이트웨이 역할을 하고 있으며, 한 서버가 액세스하고 있는 다른 서버에서 적시에 응답을 받지 못했음을 의미 |
📖 reference
728x90
'Backend 🧦' 카테고리의 다른 글
[Java] Boolean vs boolean (0) | 2024.05.11 |
---|---|
[Spring] 스프링 스케줄러(Spring Scheduler) (0) | 2023.11.14 |
[Spring, KakaoChatbot] 눈물의 챗봇 스킬테스트😭 (0) | 2023.07.28 |
[Swagger] DTO에서 특정 parameter만 숨기기 (0) | 2023.07.12 |
[Spring] REST API 상태 코드 관리(1) (0) | 2023.06.12 |
댓글