4xx 클라이언트 오류 , 5xx 서버 오류

김원종·2023년 10월 4일
0

4xx ( Client Error ) 클라이언트 오류

  • 클라이언트의 요청에 잘못된 문법등으로 서버가 요청을 수행할 수 없음
  • 오류의 원인이 클라이언트에 있음
  • 중요! 클라이언트가 이미 잘못된 요청 , 데이터를 보내고 있기 때문에 , 똑같은 재시도가 실패함

400 Bad Request 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음

  • 요청 구문 , 메시지 등등 오류
  • 클라이언트는 요청 내용을 다시 검토하고 , 보내야함
  • 예) 요청 파라미터가 잘못되거나, API스펙이 맞지 않을 때

401 Unauthorized 클라이언트가 해당 리소스에 대한 인증이 필요함

  • 인증(Authentication)되지 않음
  • 401 오류 발생시 응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명
  • 참고
    • 인증(Authentication) : 본인이 누구인지 확인, (로그인)
    • 인가(Authorization) : 권한부여(ADMIN 권한처럼 특정 리소스에 접근할 수 있는 권한 인증이 있어야 인가가 있음)
    • 오류 메시지가 Unauthorized 이지만 인증 되지 않음 ( 이름이 아쉬움 )

인증은 단순히 로그인 할수있다 없다정도 인가는 리소스에 접근할수 있는 권한이 있는지 없는지에 대한 등급

403 Forbidden 서버가 요청을 이해했지만 승인을 거부함

  • 주로 인증 자격 증명은 있지만 , 접근 권한이 불충분한 경우 ( 로그인은 가능하지만 권한이 없는상황 )
  • 예) 어드민 등급이 아닌 사용자가 로그인은 했지만, 어드민 등급의 리소스에 접근하는 경우

404 Not Found 요청 리소스를 찾을 수 없음

  • 요청 리소스가 서버에 없음
  • 또는 클라이언트가 권한이 부족한 리소스에 접근할 때 해당 리소스를 숨기고 싶을 때

5xx (Server Error) 서버오류

  • 서버 문제로 오류 발생
  • 서버에 문제가 있기 때문에 재시도 하면 성공할 수도 있음 ( 복구가 되거나 등등 )

500 Internal Server Error 서버 문제로 오류 발생 , 애매하면 500오류

  • 서버 내부 문제로 오류 발생
  • 애매하면 500 오류

503 Service Unavailable 서비스 이용 불가

  • 서버가 일시적인 과부화 또는 예정된 작업으로 잠시 요청을 처리할 수 없음
  • Retry-After 헤더 필드로 얼마뒤에 복구되는지 보낼수도 있음
    [ 대부분의 서비스 이용 불가는 예측이 불가능하게 나오기에 503을 보는 경우보다 500코드로 떨어지는 경우가 많다! ]

400에러는 클라이언트쪽 특히 스펙을 잘못 맞추거나 인증이 안된 케이스가 많고
500에러는 서버 내부에 뭔가 문제가 있는 상황이다.

여기서 조심해야할 사항은 서버에서 웬만하면 500대 에러를 만들면 안된다 진짜 서버에 문제가 터졌을때 500대 에러를 생성해야한다.

예를들어 비지니스 로직상 비즈니스 고객의 요청 api스펙도 맞고 서버까지 다 들어왔는데 고객의 잔고가 부족한 상황이라면 500에러를 발생하면 안된다. 혹은 20세 이상부터 구매가능한 물건인데 20세 이하인 고객이 물건을 주문하는 경우에도 500에러를 내면 안된다.

왜냐하면 500에러는 진짜 서버에 문제가 있을때 내는것이다. **보통 모니터링 툴 같은 것들도 500오류가 발생하면 서버에 심각한 오류가 있다고 보고 모니터링을 한다. **

2번째 상황인 20세 이하 고객이 들어온 상황은 정상프로세스 상황인것이다.

비즈니스 로직상의 예외케이스이기 때문에 500에러를 생성하면 안되고 서버내부적 문제 쿼리의 문제,null포인트 인셉션 , db가 다운되는 이런 상황일때 500에러를 내야한다.
그외는 400이나 200으로 해결하는것이 바람직한 방법이다!

profile
개린이

0개의 댓글

관련 채용 정보