상태코드
HTTP API 에 대해 클라이언트가 요청을 보내면 서버측에선 응답 메시지를 보내준다.
응답 메시지 안에 상태코드가 포함 되어 있다.
이 상태코드를 통해서 서버에서 어덯게 처리되었는지를 추측할 수 있다.
- 1xx(informational)
- 요청이 수신되어 처리중이다.
- 2xx(successful)
- 요청이 정상적으로 처리되었다.
- 200(OK)
- GET과 같은 조회 요청에 성공적으로 응답하는 경우
- 201(Created)
- POST 와 같은 생성요청으로 리소스가 생성이 정상적으로 된 경우에 해당한다.
- 응답 메시지에는 생성된 리소스 식별자가 Location 필드에 추가되어 응답된다.
- 202(Accepted)
- 요청은 서버에서 받았으나 아직 처리가 되지 않은 경우
- 204(No Content)
- 서버에서 요청은 성공적으로 수행했지만, 응답시 메시지 바디에 담을 데이터가 없는 경우에 해당한다.
- 3xx(Redirection)
- 요청을 완료하기 위해 추가 행동이 필요
- 응답메시지 헤더에 Location 필드가 있는 경우 해당 위치로 이동한다.
- 영구 리다이렉션 : 특정 리소스의 URI가 영구적으로 이동한다.
- 301(Moved Permanently)
- 리다이렉트시 요청 메서드 GET으로 변한다.
- 본문이 변경될 수 있다.
- 308(Permanent Redirect)
- 301 상태코드와 기능은 동일하다.
- 응답 메시지의 본문과 요청 메서드가 유지된다.
- 301(Moved Permanently)
- 일시 리다이렉션 : 리소스의 URI 가 일시적으로 변경된다.
- 302(Found)
- 리다이렉트시 요청 메서드가 GET으로 변한다.
- 307(Temporary Redirect)
- 302와 기능은 같다.
- 응답 메시지의 본문과 요청 메서드가 유지된다.
- 303(See Other)
- 302와 기능은 같다.
- 리다이렉트시 요청 메서드가 GET으로 변한다.
- 304(Not Modified)
- 캐시를 목적으로 사용한다.
- 클라이언트에 리소스가 수정되지 않았음을 알린다.
- 304 응답은 응답에 메시지 바디를 사용하면 안된다.
- 조건부 GET, HEAD 요청시 사용한다.
- 302(Found)
- 요청을 완료하기 위해 추가 행동이 필요
- 4xx(Client Error)
- 클라이언트에서 잘못된 스펙으로 데이터를 보냈거나 인증 , 인가가 만족되지 않아 서버에서 요청을 수행할 수 없다.
- 400(Bad Request)
- 클라이언트가 보내는 포맷이나 데이터에 문제가 있을 경우 발생
- 401(Unauthorized)
- 인증(Authentication)이 되지 않은 클라이언트에서 접근시 응답하는 상태코드이다.
- 403(Forbidden)
- 인증자격은 있지만, 해당 리소스에 접근할 권한이 없는 경우 응답하는 상태코드
- 일반 회원이 관리자 페이지에 접근하려 하는 경우
- 404(Not Found)
- 요청 리소스를 찾을 수 없을 때 발생
- 400(Bad Request)
- 클라이언트에서 잘못된 스펙으로 데이터를 보냈거나 인증 , 인가가 만족되지 않아 서버에서 요청을 수행할 수 없다.
- 5xx(Server Error)
- 서버에서 에러가 발생하여 요청을 처리할 수 없는 경우
- 500(Internal Server Error)
- 서버 내부 문제로 오류가 발생한다.
- 서버측의 로직에서 발생하는 대다수의 예외나 에러는 모두 500 오류를 낸다.
- 정말 서버에 오류가 있을 때만 발생해야 한다.
- 비지니스 로직과 같이 시스템이 아닌 로직상의 문제가 발생할 때 500 응답 코드를 반환해서는 안된다.
- 503(Service Unavailable)
- 서버에 트래픽 문제 혹은 점검으로 잠시 요청을 처리할 수 없는 경우 응답으로 사용된다.
- Retry-After 헤더 필드로 얼마 뒤 복구되는지 보낼 순 있지만, 예측 불가능한 경우 대부분이기에 잘 사용되지 않는다.
- 500(Internal Server Error)
- 서버에서 에러가 발생하여 요청을 처리할 수 없는 경우
'HTTP' 카테고리의 다른 글
[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 메서드 활용 (0) | 2022.11.15 |
---|---|
[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 메서드 (0) | 2022.10.24 |
[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 기본 (0) | 2022.10.24 |
[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 기본 - 모든 것이 HTTP, 클라이언트 서버 구조 (0) | 2022.10.08 |
[모든 개발자를 위한 HTTP 웹 기본 지식]URI와 웹 브라우저 요청 흐름 - URI, 웹 브라우저의 요청 흐름 (0) | 2022.10.05 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 인터넷 네트워크 - PORT, DNS (2) | 2022.10.04 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 인터넷 네트워크 - TCP, UDP (0) | 2022.10.03 |
[모든 개발자를 위한 HTTP 웹 기본 지식] 인터넷 네트워크 - 인터넷 통신, IP(인터넷 프로토콜) (0) | 2022.10.03 |