HTTP 상태 코드

사명기·2019년 8월 25일
2

진행중인 프로젝트에서 ResponseEntity를 사용하는 중 HttpStatus가 알고 있던 것보다 더 많은 걸 알았다.
그래서 서버로부터 Request 결과를 전달하는 상태 코드에 대해 공부하려고 한다.

상태 코드

클라이언트가 서버에 request를 보낼 때 그 결과의 상태를 알려주는 것상태 코드의 역할이다.
서버가 클라이언트의 request를 정상적으로 처리 했는지, 에러였는지 알 수 있다.

상태 코드는 3자리 수로 나타내는데, 가장 앞자리 수는 response의 클래스를 의미한다.

response class

상태클래스의미
1xxInfomational요청을 받고 처리중
2xxSuccess요청을 정상적으로 처리함
3xxRedirection요청을 완료하기 위해 추가 동작 필요
4xxClient Error서버가 요청 이해 불가능
5xxServer Error서버가 요청 처리 실패

이제 자주 사용되는 상태 코드들에 대해 자세히 알아보자.

1xx : 조건부 응답(Infomational)

  • 1xx 응답은 요청을 받았으며, 작업을 계속 함을 의미
상태코드상태설명
100Continue클라이언트는 request를 계속 해야함. 서버는 나머지 요청의 나머지 부분을 기다리는 상태
101Switching Protocols클라이언트가 서버에 프로토콜 전환 요청, 서버는 승인 중인 상태

2xx : 성공(Success)

  • 2xx 응답은 요청이 정상적으로 처리되었음을 의미
상태코드상태설명
200Ok서버가 요청을 정상 처리
204No Content서버가 요청을 정상 처리 했지만, response에 엔티티 바디를 포함하지 않음. 클라이언트에 새로운 정보를 보낼 필요가 없는 경우 사용됨.
206Partial Content범위가 지정된 요청에 의해서 서버가 부분적 GET 요청을 받았음을 나타냄. response에 지정된 범위의 엔티티가 포함

3xx : 리다이렉트(Redirection)

  • 3xx 응답은 서버가 요청을 마치기 위해 클라이언트에서 추가 동작을 해야함을 의미
상태코드상태설명
301Moved Permanently요청된 리소스에 새로운 URI가 부여되어 있어서, 이후로는 그 리소스를 참조하는 URI를 사용해야 함. 영구적인 이동
302Found요청된 리소스에 새로운 URI가 할당되어 있어서, 그 URI를 참조해야 함. 일시적인 이동
303See Other요청에 대한 리소스는 다른 URI에 있어서 GET 메서드를 사용해서 얻어야 함. 302 Found와 같은 기능이지만, 리다이렉트 장소를 GET 메서드로 얻어야 하는 것이 다름.
304Not Modified클라이언트가 조건부 요청을 했을 때 리소스에 대한 접근은 허용하지만, 조건이 충족되지 않았음을 의미. 304는 3xx에 분류되어 있지만 리다이렉트와는 관계가 없음
307Temporary Redirect현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 함

4xx : 클라이언트 에러(Client Error)

  • 4xx 응답은 클라이언트의 원인으로 에러가 발생했음을 의미
상태코드상태설명
400Bad Request요청 구문이 잘못되었음을 나타냄. 브라우저는 이것을 200 OK와 같이 취급함
401Unauthorized송신한 응답에 HTTP 인증 정보가 필요하다는 것을 나타냄. 이미 1번의 요청이 이루어진 경우에는 유저 인증에 실패했음을 의미
403Forbidden요청된 리소스의 액세스가 거부되었음을 의미. 401과 비슷하지만 403의 경우에는 요청에 Authroization 헤더가 존재하지 않는다.
404Not Found요청한 리소스가 서버상에 없다는 것을 의미

5xx 서버 에러(Server Error)

  • 5xx 응답은 서버 원인으로 에러가 발생하고 있음을 의미
상태코드상태설명
500Internal Server Error서버에서 요청을 처리하는 도중에 에러가 발생하였음을 나타냄
503Service Unavailable일시작으로 서버가 과부하 상태이거나 점검중이기 때문에 현재 요청을 처리할 수 없음을 나타냄

참고 자료

0개의 댓글