장고에서 view를 작성하다보면 request를 받아서 response를 보낼 때 status를 뭘로 보낼지 고민될 경우가 많다.
보통 API에서 많이 쓰이는 HTTP 상태 코드는 200, 400, 401, 403, 404 정도인데, 이것들 사이에서도 뭘 써야할 지 고민될 경우가 많아서 다시 한 번 가볍게 정리해놓으려 한다.
성공
의 의미는 HTTP 메소드에 따라 달라진다.Bad Request
실패. 잘못된 문법으로 서버가 요청을 이해할 수 없음. 클라이언트에서 넘어온 파라미터가 이상할 경우.Unauthorized
실패. 비인증을 의미하며 클라이언트에서 넘어온 보안 토큰이 이상하므로 클라이언트는 반드시 스스로를 인증해야 함.Forbidden
실패. 사용자의 권한으로 리소스를 사용할 수 없음. 예를들어 클라이언트는 미승인이어서 서버는 거절을 위한 적절한 응답을 보내게됨. 401과 다른 점은 서버가 클라이언트가 누구인지 알고있음.Not Found
실패. uri가 존재하지 않을 때도 뜨는 에러. 또한, API 엔드포인트는 적절하지만 리소스가 없거나, 서버가 인증받지 않은 클라이언트로부터 리소스를 숨기기위해서 403대신에 전송하기도 한다.Internal sever error
실패. 서버 로직의 문제로 처리 방법을 알 수 없는 상황과 마주침