HTTP 상태 코드
HTTP 상태 코드
HTTP 상태 코드는 HTTP 요청에 대한 서버의 응답을 나타내는 3자리 숫자입니다. 첫 번째 숫자는 응답의 종류를 나타내며, 나머지 두 숫자는 세부적인 응답 내용을 나타냅니다.
HTTP 상태 코드는 크게 5가지 종류로 나눌 수 있습니다.
- 1xx (Informational): 요청을 받았으며 프로세스를 계속 진행합니다.
- 2xx (Success): 요청을 성공적으로 받았으며 인식했고 수용하였다.
- 3xx (Redirection): 요청 완료를 위해 추가 작업 조치가 필요하다.
- 4xx (Client Error): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다.
- 5xx (Server Error): 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.
1xx (Informational)
1xx 상태 코드는 요청이 정상적으로 수신되었으며 처리가 진행 중임을 나타냅니다.
- 100 Continue: 클라이언트는 요청을 계속 진행할 수 있습니다.
- 101 Switching Protocols: 프로토콜이 전환되었습니다.
- 102 Processing: 요청은 처리 중입니다.
- 103 Early Hints Experimental: 클라이언트는 서버로부터 일부 힌트를 받을 수 있습니다.
2xx (Success)
2xx 상태 코드는 요청이 성공적으로 완료되었음을 나타냅니다.
- 200 OK: 요청이 성공적으로 완료되었습니다.
- 201 Created: 새 리소스가 생성되었습니다.
- 202 Accepted: 요청은 수락되었지만 아직 완료되지 않았습니다.
- 203 Non-Authoritative Information: 요청은 성공적으로 완료되었지만 정보는 다른 소스에서 가져왔습니다.
- 204 No Content: 요청은 성공적으로 완료되었지만 응답에는 콘텐츠가 없습니다.
- 205 Reset Content: 요청은 성공적으로 완료되었으며 클라이언트는 뷰를 재설정해야 합니다.
- 206 Partial Content: 요청된 리소스의 일부만 제공됩니다.
3xx (Redirection)
3xx 상태 코드는 요청을 완료하기 위해 클라이언트가 추가 작업을 수행해야 함을 나타냅니다.
- 301 Moved Permanently: 리소스가 영구적으로 다른 위치로 이동되었습니다.
- 302 Found: 리소스가 일시적으로 다른 위치로 이동되었습니다.
- 303 See Other: 요청은 다른 위치에서 완료되어야 합니다.
- 304 Not Modified: 리소스는 변경되지 않았으므로 클라이언트는 캐시된 버전을 사용할 수 있습니다.
- 307 Temporary Redirect: 요청은 일시적으로 다른 위치로 이동되었습니다.
4xx (Client Error)
4xx 상태 코드는 클라이언트의 요청에 문제가 있음을 나타냅니다.
- 400 Bad Request: 요청이 잘못되었습니다.
- 401 Unauthorized: 요청을 수행하려면 인증이 필요합니다.
- 402 Payment Required: 요청을 수행하려면 지불이 필요합니다.
- 403 Forbidden: 요청은 허용되지 않습니다.
- 404 Not Found: 요청된 리소스가 없습니다.
- 405 Method Not Allowed: 요청된 메소드가 허용되지 않습니다.
- 406 Not Acceptable: 요청된 콘텐츠 형식이 지원되지 않습니다.
- 407 Proxy Authentication Required: 요청을 수행하려면 프록시 인증이 필요합니다.
- 408 Request Timeout: 요청이 너무 오래 걸렸습니다.
- 409 Conflict: 요청을 수행할 수 없습니다.
- 410 Gone: 요청된 리소스가 영구적으로 제거되었습니다.
- 411 Length Required: 요청에 콘텐츠 길이가 필요합니다.
- 412 Precondition Failed: 요청에 대한 조건이 충족되지 않았습니다.
- 413 Payload Too Large: 요청된 콘텐츠가 너무 큽니다.
- 414 URI Too Long: 요청 URI가 너무 깁니다.
- 415 Unsupported Media Type: 요청된 콘텐츠 형식이 지원되지 않습니다.
5xx (서버 오류)
- 500 Internal Server Error: 서버가 요청을 처리하는 중에 예기치 않은 상황에 놓였습니다. 이는 서버 내부의 로직 오류, 리소스 부족 등 다양한 이유로 발생할 수 있습니다.
- 502 Bad Gateway: 게이트웨이나 프록시 역할을 하는 서버가 상류 서버로부터 무효한 응답을 받았습니다.
- 503 Service Unavailable: 서버가 일시적으로 요청을 처리할 수 없는 상태입니다. 이는 대게 서버의 과부하나 유지보수로 인해 발생합니다. Retry-After 헤더를 사용하여 클라이언트에게 얼마나 기다려야 하는지를 알려 줄 수 있습니다.
상태 코드 활용 사례
- RESTful API 설계: RESTful API를 설계할 때, 상태 코드는 클라이언트에게 메서드의 결과를 명확하게 전달하는 수단으로 사용됩니다. 예를 들어, 리소스 생성에 성공했을 때는 201 상태 코드를 반환합니다.
- 캐싱 메커니즘: 캐싱을 구현할 때 304 상태 코드를 사용하면, 클라이언트와 서버 간의 데이터 전송을 최적화할 수 있습니다.
- 오류 핸들링: 4xx와 5xx 상태 코드를 활용하여 클라이언트나 서버에서 발생하는 다양한 오류 상황을 명시적으로 처리할 수 있습니다.
개발자에게 주는 시사점
상태 코드를 올바르게 사용하려면 다음과 같은 점들을 고려해야 합니다.
- 문서화: API를 사용하는 개발자들이 상태 코드의 의미를 정확히 이해할 수 있도록 충분한 문서화가 필요합니다.
- 커스텀 상태 코드: 표준 HTTP 상태 코드만으로는 부족한 경우, 커스텀 상태 코드를 정의할 수도 있지만 이는 권장되지 않습니다. 표준 상태 코드를 사용하여 문제를 해결할 수 있는지 먼저 고려해야 합니다.
- 로그 및 모니터링: 서버에서 반환되는 상태 코드를 로깅하고 모니터링 함으로써, 문제가 발생했을 때 신속하게 대응할 수 있습니다.
HTTP 상태 코드는 웹 서비스 구축 및 운영에서 중요한 측면 중 하나입니다. 이를 통해 서비스의 안정성과 유용성을 높일 수 있으므로, 각 코드가 의미하는 바를 정확히 이해하고 적절하게 활용해야 합니다.
http 상태 코드 중에서 많이 쓰이는 코드
HTTP 상태 코드 중에서 많이 쓰이는 코드는 다음과 같습니다:
- 200 OK (성공): 클라이언트의 요청이 성공적으로 처리되었음을 나타냅니다. 가장 일반적으로 사용되며, 요청한 리소스가 정상적으로 반환된 경우에 이 코드가 반환됩니다.
- 404 Not Found (찾을 수 없음): 클라이언트가 요청한 리소스를 찾을 수 없을 때 반환됩니다. 링크가 잘못되었거나 요청한 페이지가 삭제되었을 때 자주 발생하는 코드입니다.
- 302 Found (찾음): 이 코드는 리소스가 임시로 다른 위치로 이동했음을 나타내며, 클라이언트는 새 위치로 재요청해야 합니다. 종종 리다이렉션에 사용됩니다.
- 403 Forbidden (금지됨): 클라이언트가 요청한 리소스에 접근할 권한이 없을 때 반환됩니다. 보안상의 이유로 페이지에 접근을 금지할 때 사용됩니다.
- 500 Internal Server Error (서버 오류): 서버에서 오류가 발생했을 때 반환됩니다. 클라이언트는 오류가 서버 측에서 발생했음을 알리며, 개발자에게 디버깅 정보를 제공할 때 유용합니다.
이러한 상태 코드는 웹 개발에서 가장 흔하게 사용되며, 클라이언트와 서버 간의 원활한 통신 및 오류 처리를 지원하는 데 중요한 역할을 합니다.
'[F-Lab 멘토링 학습]' 카테고리의 다른 글
| 자바 reflection의 동작원리와 장단점 (0) | 2023.10.03 |
|---|---|
| 동기, 비동기, 블로킹, 논블로킹 (2) | 2023.10.02 |
| LRU/LFU/FIFO 캐시 삭제 알고리즘 (0) | 2023.09.26 |
| 스프링 @Transactional어노테이션의 동작원리와 전파 속성들 (0) | 2023.09.26 |
| 스프링 필터와 인터셉터 그리고 차이점 (3) | 2023.09.26 |