성공 상태 코드 (2XX)
200 OK
- 가장 일반적인 성공 상태
- 요청이 성공적으로 처리됨
- GET 요청 성공시 주로 사용
201 Created
- 새로운 리소스 생성 성공
- POST 요청 성공시 주로 사용
- 생성된 리소스의 URI를 응답에 포함
204 No Content
- 요청은 성공했지만 응답 본문 없음
- DELETE 요청 성공시 주로 사용
클라이언트 에러 (4XX)
400 Bad Request
- 잘못된 요청 구문이나 형식
- JSON 형식 오류
- 필수 파라미터 누락
{
"error": "Invalid request format",
"message": "Name field is required"
}
401 Unauthorized
- 인증이 필요한 리소스
- 로그인이 필요한 경우
- 토큰이 만료된 경우
{
"error": "Authentication required",
"message": "Please login first"
}
403 Forbidden
- 권한이 없는 리소스 접근
- 인증은 됐지만 권한 부족
{
"error": "Access denied",
"message": "You don't have permission"
}
404 Not Found
{
"error": "Resource not found",
"message": "The requested URL was not found"
}
서버 에러 (5XX)
500 Internal Server Error
- 서버 내부 오류
- 데이터베이스 연결 실패
- 예상치 못한 서버 오류
{
"error": "Internal server error",
"message": "Something went wrong"
}
502 Bad Gateway
- 게이트웨이/프록시 서버 오류
- 서버 간 통신 실패
503 Service Unavailable
- 서버가 일시적으로 응답 불가
- 서버 과부하나 점검 중
🔹 에러 처리 시 주의사항
-
명확한 에러 메시지
- 에러의 원인을 명확히 설명
- 해결 방법 제시 (가능한 경우)
- 사용자가 이해하기 쉬운 언어 사용
-
보안 고려
- 민감한 정보는 에러 메시지에 포함하지 않기
- 스택 트레이스 노출 주의
- 데이터베이스 에러 메시지 숨기기
-
로깅
- 중요 에러는 반드시 로그 기록
- 에러 발생 시간, 컨텍스트 포함
- 디버깅에 필요한 정보 저장
-
사용자 경험
- 친절한 에러 메시지
- 적절한 대안 제시
- 필요시 지원팀 연락처 제공