Status Code
- 사용자가 웹 서버에 요청을 보냈을 때, 응답을 보내주는 숫자 코드
- 각 숫자는 미리 약속된 특정한 의미를 포함
성공 응답
: 요청이 성공적으로 진행되었을 경우
200 OK
: 대표적인 성공 코드, 에러 없이 요청이 성공적으로 진행되었음을 의미
- 서버가 요청받은 페이지를 성공적으로 제공
- 대부분의 경우 성공에 대한 응답을 200으로 통일하는 경우가 많음
- 주로 GET 요청에 대한 응답으로 사용
201 Created
: 요청이 성공적으로 처리 되어, 서버가 새로운 리소스를 생성했을 때 사용하는 코드
- 주로 POST, PUT 요청 등에 대한 응답으로 사용
204 No Content
: 서버에 대한 요청이 성공적으로 처리 되었고, 제공해 줄 응답 데이터가 없을 때 사용하는 코드
- 수정, 삭제와 같은 요청을 받을 경우 제공해 줄 데이터가 없으므로 204 코드를 사용
- 주로 PUT, DELETE 요청 에 대한 응답으로 사용
리다이렉션 메시지
: 요청이 완수되기 위해서는 추가적인 행동이 필요하다는 의미
301 Moved Permanently
: 요청한 리소스가 응답 헤더의 Location에 주어진 URL로 완전히 이동됐음을 의미
예를 들어, 주소창에 http://naver.com/을 입력하면 301을 리턴하는데
응답 헤더의 Location을 확인해보면 http://www.naver.com/으로 리다이렉트 된다.
웹브라우저는 이 코드를 받고, 해당하는 URL로 리다이렉트 된다.
* 리다이렉트(Redirect)란?
re(다시) + direct(지시하다) 즉, 다시 지시하는 것
302 Found
: 요청한 리소스가 응답 헤더의 Location에 주어진 URL로 일시적으로 이동됐음을 의미
예를 들어, kart.nexon.com 같은 게임페이지에 접속할 때, 메인 홈페이지가 아닌
현재 진행중인 이벤트를 보여주는 이벤트 페이지로 일시적으로 이동시킨다.
304 Not Modified
- 캐시목적으로 사용
- 요청 후 수정된 사항이 없을 때 사용
- 이 경우, 캐시에 저장되어 있는 데이터를 그대로 보여주게 된다.
클라이언트 에러 응답
: 클라이언트의 요청이 유효하지 않을 때 사용
400 Bad Request
: API에 정의되지 않은 방식으로 요청하는 등 클라이언트가 잘못된 요청을 했을 때 사용
예를 들어, 로그인할 때 ID만 보내고 PASSWORD를 보내지 않았을 때 400 코드 사용
401 Unauthorized / 403 Forbidden
: 클라이언트가 권한이 없어 요청을 받아들일 수 없을 때 사용
401 VS 403 차이점
- 401 : 인증이 되지 않은 경우
예를 들어, 로그인이 필요한 기능에서 로그인을 하지 않은 상태로 요청 시 401 코드 사용
- 403 : 권한이 없는 경우
예를 들어, 카페에서 로그인은 되어있는 상태이지만 등급이 낮아 접속 권한이 없을 때
403 코드 사용
404 Not Found
: 서버에 클라이언트가 요청한 리소스를 찾을 수 없을 때 사용
- 실생활에서 자주 접할 수 있는 에러
- URL을 잘못 입력할 경우
- 예전 URL로 사라진 위치를 참조하고 있을 경우
- 사이트 주소 뒤에 /asdf/qwer 같은 없을 만한 주소를 입력해서 확인 가능
서버 에러 응답
: 서버 측에 오류가 있을 때 사용
500 Internal Server Error
: 대표적인 서버 에러 코드, 클라이언트의 요청을 처리하는 과정에서 서버 측에 문제가 생겼을 때 사용
- DB에서 오류가 발생할 경우
예를 들어, 회원가입 로직에서
- 사용자가 이미 존재하는 이메일을 통해 회원가입 시도
- 존재여부 확인하지 않고 데이터 추가 시도
- 유일성 문제 등에 의해 DB 에러 즉, 서버 에러 발생
503 Service Unavailable
: 서버의 과부하, 점검 등의 일시적인 이유로 서버에 접근이 불가능할 때 사용