Spring Boot

[Spring Boot] 8. HTTP 상태 코드 (스프링 부트를 배워보자.)

나홀로전세집 2023. 9. 20. 20:20
728x90
반응형

안녕하세요 나홀로전세집입니다.

Spring Boot 웹 애플리케이션을 개발할 때 HTTP 상태 코드는 중요한 역할을 합니다.

오늘은 Spring Boot에서 HTTP 상태 코드를 어떻게 처리하고 사용하는지에 대해 자세히 알아보겠습니다.

 

HTTP 코드란?

클라이언트가 웹 서버에 보낸 요청의 처리 결과를 나타내는 3자리 숫자입니다. 
클라이언트에게 요청이 성공적으로 처리되었는지 또는 어떤 문제가 발생했는지를 알려줍니다.
클라이언트와 서버 간의 통신을 원활하게 하기 위해 사용됩니다.

 

코딩하다 자주 보이는 200, 404, 500 등 이 숫자들이 HTTP 상태 코드입니다.

 

대표적인 HTTP 상태 코드를 알려드리겠습니다.

 

 

1XX (Informational 정보) : 클라이언트에게 정보를 제공합니다.

  - 100 Continue - 요청이 받아들여졌으며, 클라이언트는 계속해서 요청을 보낼 수 있음을 나타냅니다.
  - 101 Switching Protocols -  서버가 프로토콜을 변경했음을 나타냅니다.
  - 102 Processing - 요청이 처리 중임을 나타냅니다.
  - 103 Early Hints - 응답이 완전히 준비되지 않았지만 클라이언트에게 일부 정보를 보냄을 나타냅니다.

 

2XX (Successful 성공) : 클라이언트 요청이 성공적으로 처리되었습니다.

  - 200 OK - 요청이 성공적으로 처리되었음을 나타냅니다.
  - 201 Created - 새로운 리소스가 성공적으로 생성되었음을 나타냅니다.
  - 202 Accepted - 요청이 받아들여졌지만 아직 처리되지 않았음을 나타냅니다.
  - 203 Non-Authoritative Information - 응답은 인증되지 않은 출처에서 온 정보임을 나타냅니다.
  - 204 No Content - 응답에 내용이 없음을 나타냅니다.
  - 205 Reset Content - 클라이언트의 문서 뷰를 재설정해야 함을 나타냅니다.
  - 206 Partial Content - 클라이언트에게 일부 리소스 내용이 반환됨을 나타냅니다.
  - 207 Multi-Status - 다양한 상태 코드를 포함하는 응답임을 나타냅니다.
  - 208 Already Reported - 리소스 상태가 이미 이전에 보고되었음을 나타냅니다.
  - 226 IM Used - 서버가 리소스가 변경되었음을 나타냅니다.

 

3XX (Redirection 리디렉션) : 리소스가 다른 위치로 이동되었거나 리디렉션되어야 합니다.

  - 300 Multiple Choices - 여러 리소스가 가능성 있음을 나타냅니다.
  - 301 Moved Permanently - 리소스가 새 위치로 영구적으로 이동했음을 나타냅니다.
  - 302 Found (Temporary Redirect) - 리소스가 임시적으로 다른 곳으로 이동했음을 나타냅니다.
  - 303 See Other - 요청을 완료하려면 다른 리소스로 이동해야 함을 나타냅니다.
  - 304 Not Modified - 리소스가 수정되지 않았음을 나타냅니다.
  - 305 Use Proxy - 클라이언트가 프록시를 사용해야 함을 나타냅니다.
  - 307 Temporary Redirect - 리소스가 임시적으로 다른 곳으로 이동했음을 나타냅니다.
  - 308 Permanent Redirect - 리소스가 영구적으로 다른 곳으로 이동했음을 나타냅니다.

 

4XX (Client Error 클라이언트 오류) : 클라이언트 요청에 오류가 있습니다.

  - 400 Bad Request - 요청이 서버에서 이해되지 않음을 나타냅니다.
  - 401 Unauthorized - 요청에 대한 인증이 필요하며, 제공된 인증 정보가 유효하지 않음을 나타냅니다.
  - 402 Payment Required - 요청을 처리하려면 결제가 필요함을 나타냅니다.
  - 403 Forbidden - 요청한 리소스에 액세스할 권한이 없음을 나타냅니다.
  - 404 Not Found - 요청한 리소스를 서버에서 찾을 수 없음을 나타냅니다.
  - 405 Method Not Allowed - 요청된 HTTP 메서드가 지원되지 않음을 나타냅니다.
  - 406 Not Acceptable - 클라이언트가 지원하지 않는 응답 형식을 요청했음을 나타냅니다.
  - 407 Proxy Authentication Required - 프록시 인증이 필요함을 나타냅니다.
  - 408 Request Timeout - 서버가 요청 처리를 위한 시간 제한에 도달했음을 나타냅니다.
  - 409 Conflict - 요청이 현재 리소스 상태와 충돌함을 나타냅니다.
  - 410 Gone - 요청한 리소스가 더 이상 사용되지 않음을 나타냅니다.
  - 411 Length Required - 요청이 Content-Length 헤더를 제공하지 않았음을 나타냅니다.
  - 412 Precondition Failed - 사전 조건이 충족되지 않았음을 나타냅니다.
  - 413 Payload Too Large - 요청이 서버의 허용 한계를 초과함을 나타냅니다.
  - 414 URI Too Long - 요청 URI가 서버의 허용 한계를 초과함을 나타냅니다.
  - 415 Unsupported Media Type - 요청된 미디어 타입이 지원되지 않음을 나타냅니다.
  - 416 Range Not Satisfiable - 요청된 범위가 현재 리소스에 대해 만족되지 않음을 나타냅니다.
  - 417 Expectation Failed - Expect 요청 헤더의 기대가 충족되지 않음을 나타냅니다.
  - 418 I'm a teapot - 서버가 "찻주전자"임을 농담으로 나타냅니다. (장난 코드)
  - 421 Misdirected Request - 요청이 잘못된 서버로 전송되었음을 나타냅니다.
  - 422 Unprocessable Entity - 요청의 형식이 올바르지 않거나 처리할 수 없음을 나타냅니다.
  - 423 Locked - 리소스가 잠겨 있어 요청을 수행할 수 없음을 나타냅니다.
  - 424 Failed Dependency - 이전 요청이 실패했기 때문에 현재 요청을 처리할 수 없음을 나타냅니다.
  - 426 Upgrade Required - 클라이언트가 더 높은 프로토콜 버전을 요청함을 나타냅니다.
  - 428 Precondition Required - 요청이 사전 조건을 충족하지 않음을 나타냅니다.
  - 429 Too Many Requests - 클라이언트가 시간 당 요청 한도를 초과함을 나타냅니다.
  - 431 Request Header Fields Too Large - 요청 헤더가 서버의 제한을 초과함을 나타냅니다.
  - 451 Unavailable For Legal Reasons - 리소스에 대한 접근이 법적 이유로 금지됨을 나타냅니다.

 

5XX (Server Error 서버 오류) : 서버에서 오류가 발생했습니다.

  - 500 Internal Server Error - 서버에서 오류가 발생하여 요청을 처리할 수 없음을 나타냅니다.
  - 501 Not Implemented - 요청된 기능이 서버에서 아직 구현되지 않음을 나타냅니다.
  - 502 Bad Gateway - 게이트웨이 또는 프록시 서버에서 잘못된 응답을 받았음을 나타냅니다.
  - 503 Service Unavailable - 서버가 현재 서비스를 사용할 수 없음을 나타냅니다.
  - 504 Gateway Timeout - 게이트웨이 또는 프록시 서버에서 요청 시간 초과가 발생함을 나타냅니다.
  - 505 HTTP Version Not Supported - 서버가 요청된 HTTP 버전을 지원하지 않음을 나타냅니다.
  - 506 Variant Also Negotiates - 서버가 요청에 대한 적절한 응답을 찾지 못함을 나타냅니다.
  - 507 Insufficient Storage - 서버의 저장 공간이 부족하여 요청을 처리할 수 없음을 나타냅니다.
  - 508 Loop Detected - 요청 처리 중에 무한 루프가 발생함을 나타냅니다.
  - 510 Not Extended - 서버가 추가 확장을 요청하지 않음을 나타냅니다.
  - 511 Network Authentication Required - 네트워크 자원에 대한 인증이 필요함을 나타냅니다.

 

HTTP 상태 코드는 이렇게나 많이 있습니다.

이 중 HTTP에서 많이 사용되는 상태 코드를 알려드리겠습니다.

 

 

HTTP에서 많이 사용되는 상태 코드

  - 200 OK:

          클라이언트의 요청이 성공적으로 처리되었음을 나타냅니다.

          요청이 정상적으로 완료된 경우 이 상태 코드가 반환됩니다.
  - 201 Created:

          새로운 리소스가 성공적으로 생성되었음을 나타냅니다. 

          주로 POST 요청과 함께 사용되며, 새로운 리소스의 URI는 응답에 포함됩니다.
  - 204 No Content:

          요청이 성공적으로 처리되었지만 응답에는 추가 내용이 없음을 나타냅니다. 

          주로 PUT 또는 DELETE 요청과 함께 사용됩니다.
  - 301 Moved Permanently:

          요청한 리소스가 새 위치로 영구적으로 이동했음을 나타냅니다. 

          클라이언트는 새로운 위치로 재요청해야 합니다.
  - 302 Found (Temporary Redirect):

          요청한 리소스가 임시적으로 다른 곳으로 이동했음을 나타냅니다. 

          클라이언트는 임시적으로 다른 위치로 이동하며, 원래 위치로 돌아갈 수 있습니다.
  - 400 Bad Request:

          클라이언트의 요청이 서버에서 이해되지 않거나 잘못된 구문을 가지고 있음을 나타냅니다.
  - 401 Unauthorized:

          요청에 대한 인증이 필요하며, 제공된 인증 정보가 유효하지 않음을 나타냅니다.
  - 403 Forbidden:

          클라이언트가 요청한 리소스에 액세스할 권한이 없음을 나타냅니다.
  - 404 Not Found:

          요청한 리소스를 서버에서 찾을 수 없음을 나타냅니다.
  - 500 Internal Server Error:

          서버에서 오류가 발생하여 요청을 처리할 수 없음을 나타냅니다. 

          이는 서버 측에서 문제가 발생한 경우에 반환됩니다.

 

상태 코드를 공부하며 재밌는 상태 코드도 발견하게 되었습니다.

바로 418 I'm a teapot 코드입니다. 418 상태 코드는 농담 코드입니다. 진짜 장난으로 만들어진 농담 코드입니다.

418 코드는 일반적인 웹 개발에서는 볼 수 없는 상태 코드입니다.  

 418 I'm a teapot 는 

"웹 서버는 커피 포트를 제어하는 기능을 가지고 있지 않으므로 이러한 요청에 대해 처리할 수 없다"

라는 의미라고 합니다.

정말 이 코드를 만들었던 개발자의 모습을 상상해보니 정말 재밌었을 것 같지 않나요?

 

오늘은 HTTP 상태 코드에 대해 알아봤습니다. 

다음에도 새로운 정보를 가지고 오도록 하겠습니다.

 

오늘도 즐코딩 하시고 좋은 하루 되세요~

 

728x90
반응형