
HTTP 상태 코드는 클라이언트가 서버에 요청을 보낸 후, 서버가 클라이언트에게 응답 상태를 전달하기 위해 사용하는 3자리 숫자 코드임. 이 상태 코드는 클라이언트가 요청한 작업이 성공했는지, 오류가 발생했는지, 추가 작업이 필요한지 등을 나타냄. 상태 코드는 1XX, 2XX, 3XX, 4XX, 5XX로 나뉘며, 각 범위는 특정 응답 유형을 의미함.
REST API에서 HTTP 상태 코드는 요청에 대한 서버의 응답 상태를 명확하게 전달하는 중요한 수단임. 올바른 상태 코드를 사용하면 API 사용자가 오류의 원인을 쉽게 이해할 수 있으며, 요청의 성공 여부를 판단할 수 있음. 상태 코드를 적절히 사용하여 클라이언트와 서버 간의 통신을 보다 직관적이고 표준적으로 만들 수 있음.
1xx 상태 코드는 요청을 받아서 처리 중임을 나타냄. 클라이언트는 서버로부터 더 많은 응답을 기다려야 함.
클라이언트가 요청을 계속 진행해도 좋음을 의미함. 주로 요청 헤더를 보내고 본문 데이터를 전송하기 전에 사용됨.
예: 클라이언트가 큰 파일을 업로드하기 전에 서버가 요청을 받아들일 준비가 되었는지 확인할 때.
서버가 클라이언트의 요청에 따라 프로토콜 변경을 수락했음을 의미함. 예를 들어, HTTP/1.1에서 WebSocket 프로토콜로 변경할 때 사용됨.
2xx 상태 코드는 클라이언트의 요청이 성공적으로 처리되었음을 나타냄.
요청이 성공적으로 처리되었음을 의미함. GET 요청의 경우 리소스 조회 결과가 응답 본문에 포함되고, POST 요청의 경우 리소스가 성공적으로 생성되었음을 의미함.
요청이 성공적으로 처리되었으며, 새로운 리소스가 생성되었음을 나타냄. 주로 POST 요청에서 사용되며, 새로 생성된 리소스의 URI가 응답 헤더에 포함됨.
서버가 요청을 수락했지만, 아직 완전히 처리되지 않음을 의미함. 비동기 작업에서 사용되며, 요청을 즉시 처리할 필요가 없는 작업에서 응답으로 반환됨.
요청이 성공적으로 처리되었지만, 응답 본문이 없음을 의미함. 주로 DELETE 요청에서 사용되며, 요청이 성공적으로 처리되었지만 반환할 데이터가 없을 때 사용됨.
3xx 상태 코드는 클라이언트가 다른 URL로 이동해야 함을 의미함. 주로 리소스가 이동되었거나 리소스를 요청하기 위해 추가 작업이 필요할 때 사용됨.
요청한 리소스가 영구적으로 다른 URL로 이동되었음을 의미함. 새로운 URL은 Location 헤더에 포함되며, 클라이언트는 이후 해당 URL로 요청을 보내야 함.
요청한 리소스가 임시적으로 다른 URL에 위치하고 있음을 의미함. 클라이언트는 이 요청에 대해 새로운 URL로 요청을 보내야 하지만, 이후 다시 원래의 URL을 사용할 수 있음.
클라이언트가 요청한 리소스에 대해 다른 URI에서 조회할 수 있음을 의미함. 주로 POST 요청 이후, 클라이언트가 GET 요청을 통해 다른 페이지를 참조할 때 사용됨.
클라이언트가 요청한 리소스가 이전과 동일하며, 변경되지 않았음을 의미함. 주로 캐시된 데이터를 사용할 때 반환되며, 리소스가 변경되지 않았으므로 클라이언트가 로컬 캐시를 사용하도록 함.
4xx 상태 코드는 클라이언트의 요청에 문제가 있음을 나타냄. 잘못된 요청, 권한 문제 등이 있을 수 있음.
클라이언트의 요청이 잘못되었거나 서버가 요청을 이해할 수 없음. 주로 잘못된 파라미터 또는 구문 오류가 있을 때 반환됨.
인증이 필요하지만, 클라이언트가 인증되지 않았거나, 제공된 인증 정보가 잘못됨. Authorization 헤더가 포함되지 않았거나, 잘못된 토큰을 사용했을 때 반환됨.
클라이언트가 요청을 이해했으나, 서버가 요청을 거부함. 주로 권한이 부족할 때 반환되며, 인증이 있더라도 자원에 접근할 수 없는 경우임.
클라이언트가 요청한 리소스를 찾을 수 없음. URI가 잘못되었거나, 해당 리소스가 서버에 존재하지 않을 때 반환됨.
요청은 올바르지만, 해당 리소스에서 지원하지 않는 HTTP 메소드를 사용했을 때 반환됨. 예를 들어, GET만 지원하는 리소스에서 POST 요청을 했을 때 반환됨.
요청이 서버의 상태와 충돌이 발생했음을 나타냄. 주로 자원 간의 충돌이 있을 때 반환되며, 예를 들어 데이터 중복이나 버전 관리 충돌 등이 있을 때 사용됨.
클라이언트가 짧은 시간 안에 너무 많은 요청을 보내서, 서버가 더 이상 요청을 처리할 수 없을 때 반환됨. 주로 Rate Limiting을 설정했을 때 나타나는 상태 코드임.
5xx 상태 코드는 서버의 문제로 인해 요청이 처리되지 않았음을 나타냄. 서버 측의 오류나 장애를 의미함.
서버가 요청을 처리하는 동안 예상하지 못한 오류가 발생했음을 의미함. 주로 서버 코드에 문제가 있거나, 처리 과정에서 오류가 발생했을 때 반환됨.
서버가 잘못된 응답을 받았음을 의미함. 주로 프록시 서버나 게이트웨이에서 다른 서버로부터 잘못된 응답을 받았을 때 반환됨.
서버가 현재 일시적으로 과부하 상태이거나 유지보수 중이어서 요청을 처리할 수 없을 때 반환됨. 서버가 복구될 때까지 기다려야 함.
게이트웨이가 응답을 기다리던 중 지정된 시간 내에 응답을 받지 못했을 때 반환됨. 프록시 서버나 게이트웨이 서버에서 백엔드 서버로의 응답 시간이 초과되었을 때 발생함.