4xx (Client Error)
- 클라이언트의 요청에 잘못된 문법등으로 서버가 요청을 수행할 수 없음
- 오류의 원인이 클라이언트에 있음
- 중요! 클라이언트가 이미 잘못된 요청, 데이터를 보내고 있기 때문에, 똑같은 재시도가 실패함.
400 Bad Request
: 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음
- 요청 구문, 메시지 등등 오류
- 클라이언트는 요청 내용을 다시 검토하고 보내야함
- 예) 요청 파라미터가 잘못되거나, API 스펙이 맞지 않을 때
401 Unauthorized 인증이 안됨.
: 클라이언트가 해당 리소스에 대한 인증이 필요함
403 Forbidden
서버가 요청을 이해했지만 승인을 거부함
- 주로 인증 자격 증명은 있지만, 접근 권한이 불충분한 경우
- 예) 어드민 등급이 아닌 사용자가 로그인은 했지만, 어드민 등급의 리소스에 접근하는 경우
404 Not Found
요청 리소스를 찾을 수 없음
- 요청 리소스가 서버에 없음
- 또는 클라이언트가 권한이 부족한 리소스에 접근할 때 해당 리소스를 숨기고 싶을 때
5xx : Server Error
서버오류
- 서버 문제로 오류 발생
- 서버에 문제가 있기 때문에 재시도 하면 성공할 수도 있음(복구가 되거나 등등)
500 Internal Server Error
: 서버 문제로 오류 발생, 애매하면 500 오류
- 서버 내부 문제로 오류 발생
- 애매하면 500 오류
503 Service Unavailable
: 서비스 이용 불가
- 서버가 일시적인 과부하 또는 예정된 작업으로 잠시 요청을 처리 할 수 있음
- Retry-after 헤더 필드로 얼마뒤에 복구되는지 보낼 수도 있음.
400은 클라이언트의 오류 (스펙, 인증 오류)
500은 서버내부의 문제가 많음
웬만하면 500대 에러를 만들면 안됨
=> 서버에 문제가 있을때만 만들어야함.
- 예를 들어. 비지니스 로직 상 예외 케이스일때
고객의 잔고가 부족할 시, 또는 나이가 미성년자인데 주문을 요청할 경우 500대 에러를 내면 안됨