4XX
에러는 클라이언트의 요청 시 잘못된 문법을 사용하는 등으로 서버가 해당 요청을 수행할 수 없을 때 발생한다. 그래서 오류의 원인이 클라이언트에 있다.
이미 클라이언트에서 요청을 보낼 때부터 잘못된 상태이기 때문에, 몇 번이고 재시도를 하더라도 똑같이 실패로 이어진다. 이것이 5XX
에러와의 가장 큰 차이점💥이다.
클라이언트 오류의 대표적인 상태 코드이다. 클라이언트의 요청에 사용된 잘못된 문법 등으로 인해 서버가 요청을 수행할 수 없다는 뜻이다. 예를 들어 요청 파라미터가 잘못 되었거나, API 스펙이 맞지 않는 등의 경우가 있다. 따라서 클라이언트는 요청 내용을 재검토해서 다시 요청해야 한다.
클라이언트가 해당 리소스에 대한 인증이 필요하다는 뜻이다. 401
오류 발생 시, 응답에 WWW-Authenticate
헤더와 함께 인증 방법을 설명해야 한다.
참고로 인증(Authentication)
과 인가(Authorization)
에는 차이점이 있다. 인증은 본인이 누구인지 확인하는 것이고, 인가는 특정 리소스에 접근할 수 있는 권한이 있다는 것이다.
상태 코드 메세지가 'Unauthorized' 이지만 인증되지 않았다는 뜻으로 알면 된다.
서버가 요청을 이해하긴 했지만 승인을 거부한 상태이다. 주로 인증 자격 증명은 있지만, 접근 권한이 불충분할 때 이 상태 코드를 사용한다.
예를 들어 ADMIN 등급이 아닌 사용자가 로그인은 했지만, ADMIN 등급의 리소스에 접근하는 경우 이 상태 코드를 사용한다.
요청 리소스를 찾을 수 없다는 뜻이다. 클라이언트가 요청하는 리소스가 서버에 없기 때문에 클라이언트 에러로 분류한다.
또는 클라이언트가 접근할 권한이 부족한 리소스에 접근하려고 하는데 해당 리소스를 숨기고 싶을 때도 이 상태 코드를 사용한다.
5XX
에러는 클라이언트의 바른 요청에도 불구하고, 서버가 가진 문제로 인해 발생한다. 오류의 원인이 서버에 있기 때문에 재시도 시 성공할 가능성이 있다.
웬만한 서버 문제로 발생한 오류에 관해서는 이 상태 코드를 사용한다.
서비스 이용 불가라는 뜻으로, 서버가 일시적인 과부하 또는 예정된 작업으로 인해 일정 기간 동안 요청을 처리할 수 없음을 나타낸다.
이때는 Retry-After
헤더 필드로 얼마 뒤에 복구되는지 데이터를 보내줄 수 있다.