진행중인 프로젝트에서 ResponseEntity를 사용하는 중 HttpStatus가 알고 있던 것보다 더 많은 걸 알았다.
그래서 서버로부터 Request 결과를 전달하는 상태 코드에 대해 공부하려고 한다.
상태 코드
클라이언트가 서버에 request를 보낼 때 그 결과의 상태를 알려주는 것이 상태 코드의 역할이다.
서버가 클라이언트의 request를 정상적으로 처리 했는지, 에러였는지 알 수 있다.
상태 코드는 3자리 수로 나타내는데, 가장 앞자리 수는 response의 클래스를 의미한다.
response class
상태 | 클래스 | 의미 |
---|
1xx | Infomational | 요청을 받고 처리중 |
2xx | Success | 요청을 정상적으로 처리함 |
3xx | Redirection | 요청을 완료하기 위해 추가 동작 필요 |
4xx | Client Error | 서버가 요청 이해 불가능 |
5xx | Server Error | 서버가 요청 처리 실패 |
이제 자주 사용되는 상태 코드들에 대해 자세히 알아보자.
1xx : 조건부 응답(Infomational)
- 1xx 응답은 요청을 받았으며, 작업을 계속 함을 의미
상태코드 | 상태 | 설명 |
---|
100 | Continue | 클라이언트는 request를 계속 해야함. 서버는 나머지 요청의 나머지 부분을 기다리는 상태 |
101 | Switching Protocols | 클라이언트가 서버에 프로토콜 전환 요청, 서버는 승인 중인 상태 |
2xx : 성공(Success)
- 2xx 응답은 요청이 정상적으로 처리되었음을 의미
상태코드 | 상태 | 설명 |
---|
200 | Ok | 서버가 요청을 정상 처리 |
204 | No Content | 서버가 요청을 정상 처리 했지만, response에 엔티티 바디를 포함하지 않음. 클라이언트에 새로운 정보를 보낼 필요가 없는 경우 사용됨. |
206 | Partial Content | 범위가 지정된 요청에 의해서 서버가 부분적 GET 요청을 받았음을 나타냄. response에 지정된 범위의 엔티티가 포함 |
3xx : 리다이렉트(Redirection)
- 3xx 응답은 서버가 요청을 마치기 위해 클라이언트에서 추가 동작을 해야함을 의미
상태코드 | 상태 | 설명 |
---|
301 | Moved Permanently | 요청된 리소스에 새로운 URI가 부여되어 있어서, 이후로는 그 리소스를 참조하는 URI를 사용해야 함. 영구적인 이동 |
302 | Found | 요청된 리소스에 새로운 URI가 할당되어 있어서, 그 URI를 참조해야 함. 일시적인 이동 |
303 | See Other | 요청에 대한 리소스는 다른 URI에 있어서 GET 메서드를 사용해서 얻어야 함. 302 Found와 같은 기능이지만, 리다이렉트 장소를 GET 메서드로 얻어야 하는 것이 다름. |
304 | Not Modified | 클라이언트가 조건부 요청을 했을 때 리소스에 대한 접근은 허용하지만, 조건이 충족되지 않았음을 의미. 304는 3xx에 분류되어 있지만 리다이렉트와는 관계가 없음 |
307 | Temporary Redirect | 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 함 |
4xx : 클라이언트 에러(Client Error)
- 4xx 응답은 클라이언트의 원인으로 에러가 발생했음을 의미
상태코드 | 상태 | 설명 |
---|
400 | Bad Request | 요청 구문이 잘못되었음을 나타냄. 브라우저는 이것을 200 OK와 같이 취급함 |
401 | Unauthorized | 송신한 응답에 HTTP 인증 정보가 필요하다는 것을 나타냄. 이미 1번의 요청이 이루어진 경우에는 유저 인증에 실패했음을 의미 |
403 | Forbidden | 요청된 리소스의 액세스가 거부되었음을 의미. 401과 비슷하지만 403의 경우에는 요청에 Authroization 헤더가 존재하지 않는다. |
404 | Not Found | 요청한 리소스가 서버상에 없다는 것을 의미 |
5xx 서버 에러(Server Error)
- 5xx 응답은 서버 원인으로 에러가 발생하고 있음을 의미
상태코드 | 상태 | 설명 |
---|
500 | Internal Server Error | 서버에서 요청을 처리하는 도중에 에러가 발생하였음을 나타냄 |
503 | Service Unavailable | 일시작으로 서버가 과부하 상태이거나 점검중이기 때문에 현재 요청을 처리할 수 없음을 나타냄 |
참고 자료