클라이언트가 서버에게 작업을 요청하면 서버는 요청받은 작업을 수행한 후 작업의 수행 결과를 응답을 보내준다.
이 때, HTTP에서 작업의 성공, 실패 여부와 상관없이 상태 코드를 사용하여 결과를 알려준다.
이번 포스팅에서는 HTTP 상태코드의 종류와 각각이 무엇을 의미하는지 정리해 보려고 한다.
http 상태 코드는 크게 5가지가 있다.
정보 전달. 요청을 받았고, 작업을 진행 중이라는 의미이다.
성공. 200번대 코드들은 클라이언트가 요청한 작업을 서버가 성공적으로 받았고, 이해했으며, 받아들여졌다는 의미이다.
- 200 OK : 에러 없이 성공적으로 처리했을 때 쓰인다. 가장 일반적으로 볼 수 있는 상태 코드이다.
- 201 Created : 요청이 성공적으로 처리되서 그 결과로 리소스가 만들어졌음을 의미한다.
- 204 No Content : 요청이 정상적으로 수행되었지만, 컨텐츠를 제공하지는 않는다.
일반 사용자가 볼 일은 거의 드물며 API요청 등에서 주로 사용된다. (ex>비밀번호 변경 완료됐을 경우)
리다이렉션. 클라이언트가 요청을 완료하기 위해서 추가 조취를 취해야 한다는 의미이다.
- 301 Moved Permanetly 301 Redirect라는 별칭으로 불릴만큼 리다이렉션 코드 중 가장 많이 사용되는 코드이다.
이 코드는 요청한 리소스의 URL이 변경됐음을 의미한다. 301을 받으면 HTTP 헤더에 들어있는 location 필드를 찾아보고, 해당 필드가 존재하면 location 필드에 담긴 URL로 자동 리다이렉션한다.- 304 Not Modified 캐시를 목적으로 사용된다. 클라이언트가 요청한 리소스가 이전 요청때와 비교해보았을 때 전혀 달라진 점이 없다는 것을 읨히한다.
클라이언트 오류. 클라이언트가 서버에게 보낸 요청이 잘못된 경우 즉, 이 요청은 올바르지 않다는 것을 의미한다.
- 400 Bad Request 잘못된 문법으로 인하여 서버가 요청을 이해할 수 없음을 의미한다.
- 401 Unauthorized 인증이 필요한 리소스에 인증 없이 접근했을 경우 발생하는 오류이다. 보통 로그인이 필요한 API를 비로그인 사용자가 호출했을 때 많이 사용된다.
- 403 Forbidden 서버가 요청을 거부할 때 발생하는 오류이다. 관리자가 사용자를 차단했거나 클라이언트가 콘텐츠에 접근할 권리를 가지고 있지 않은 경우 발생한다. 401과 다른 점은 서버가 클라이언트가 누구인지 알고 있다는 것이다.
- 404 Not Found 가장 많이 접하는 오류이다. 서버가 요청받은 리소스가 없다는 것을 의미한다.
- 405 Method Not Allowed PUT 이나 DELETE 등 현재 리소스에 맞지 않는 메소드를 사용했음을 의미한다.
- 408 Request Timeout 요청 중 시간이 초과되었을 때 발생한다.
- 429 Too Many Request 클라이언트가 서버에 요청을 너무 많이 보냈을 때 발생한다.
서버 오류. 서버로 인한 오류가 발생한 것을 의미한다.
- 500 Internal Server Error 서버에 오류가 발생해 작업을 수행할 수 없음을 의미한다.
- 502 Bad Gateway 게이트웨이 상태가 좋지 않거나 서버의 과부하 상태일 때 발생한다.
- 503 Service Temporarily Unavailable 현재 서버가 멈췄거나 일시적인 과부하 또는 관리 상황일 때 발생한다.