HTTP 2xx, 3xx, 4xx, 5xx 상태코드

앞서 해당글은 인프런에 있는 '모든 개발자를 위한 HTTP 웹 기본 지식' 강의를 기반으로 추가 보충하여 공부하고 정리한 내용들로 해당 강의 자료를 일부 사용하였습니다. 강의를 듣고자 하시는 분은 아래 링크로 가셔서 들으시면 되겠습니다. 

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런

www.inflearn.com


상태코드

상태 코드는 클라이언트가 서버에 요청을 보낸 후, 서버가 클라이언트에게 응답을 보내는 과정에서 사용되는 숫자 코드입니다. 이 숫자 코드는 HTTP 프로토콜에서 정의되며, 서버가 클라이언트에게 전송하는 응답 메시지에 포함됩니다.

 

상태 코드는 클라이언트에게 서버에서 발생한 처리 결과에 대한 정보를 전달합니다. 이 정보는 클라이언트가 요청한 작업이 성공적으로 완료되었는지, 실패했는지, 다른 작업이 필요한지 등을 나타냅니다.

 

http://blog.plura.io/?p=14782

 

상태 코드는 3자리 숫자로 이루어져 있으며, 첫 번째 숫자는 상태 코드의 범주를 나타냅니다. 예를 들어, 2로 시작하는 상태 코드는 클라이언트의 요청이 성공적으로 처리되었음을 나타내는 성공 상태 코드이고, 4로 시작하는 상태 코드는 클라이언트의 요청이 잘못되었음을 나타내는 클라이언트 오류 상태 코드입니다.

 

상태 코드는 HTTP 프로토콜을 이해하는 데 중요한 역할을 합니다. 클라이언트는 서버에서 받은 상태 코드를 확인하여, 요청이 성공했는지 실패했는지 등을 판단하여 적절한 조치를 취하게 됩니다. 따라서 개발자는 상태 코드의 의미와 사용 방법을 잘 이해해야 하며, 이를 통해 클라이언트와 서버 간의 통신을 올바르게 처리할 수 있습니다.


200번대 상태 코드

200번대 상태 코드는 클라이언트가 요청한 작업이 성공적으로 처리되었음을 나타내는 상태 코드입니다. 이 상태 코드들은 HTTP 프로토콜에서 가장 일반적으로 사용되며, 클라이언트가 요청한 작업이 성공적으로 처리되었다는 것을 알리기 위해 서버에서 반환됩니다.

 

200 OK

200 상태 코드는 클라이언트의 요청이 성공적으로 처리되었음을 나타냅니다. 이 상태 코드는 대부분의 HTTP 요청에서 반환됩니다. 요청이 성공했다는 것을 클라이언트에게 알리기 위해 서버는 클라이언트가 요청한 리소스를 반환합니다.

 

201 Created

201 상태 코드는 클라이언트가 요청한 리소스가 성공적으로 생성되었음을 나타냅니다. 일반적으로 POST 메서드를 사용하여 새로운 리소스를 만들 때 반환됩니다. 서버는 생성된 리소스에 대한 URI를 포함하여 응답 본문을 반환합니다.

 

202 Accepted

202 상태 코드는 클라이언트의 요청이 수신되었지만 아직 처리되지 않았음을 나타냅니다. 이 상태 코드는 비동기적인 작업을 처리할 때 사용됩니다. 서버는 요청이 수신되었음을 클라이언트에게 알리고, 작업의 처리 상태에 대한 정보를 이후에 보내줄 것을 약속합니다.

 

204 No Content

204 상태 코드는 클라이언트의 요청이 성공적으로 처리되었으며, 서버가 클라이언트에게 반환할 데이터가 없음을 나타냅니다. 일반적으로 DELETE 메서드를 사용하여 리소스를 삭제할 때 반환됩니다. 클라이언트는 삭제된 리소스에 대한 정보를 가지고 있으므로, 서버는 별도의 응답 본문을 반환하지 않아도 됩니다.


300번대 상태 코드

300번대 상태 코드는 클라이언트가 요청한 리소스의 위치가 변경되었거나, 요청한 작업이 완료되기 위해서 추가 조치가 필요한 경우에 사용됩니다. 아래는 각각의 상태 코드에 대한 자세한 설명입니다.

 

300 Multiple Choices

300번 상태 코드는 클라이언트가 요청한 리소스가 여러 개 존재할 때 사용됩니다. 응답 본문에는 사용 가능한 리소스의 목록이 포함됩니다.

 

301 Moved Permanently

301번 상태 코드는 클라이언트가 요청한 리소스가 완전히 새로운 위치로 옮겨졌을 때 사용됩니다. 클라이언트는 새로운 위치로 리소스 요청을 다시 보내야 합니다.

 

302 Found

302번 상태 코드는 클라이언트가 요청한 리소스가 일시적으로 다른 위치에 있을 때 사용됩니다. 301과 마찬가지로 클라이언트는 새로운 위치로 리소스 요청을 다시 보내야 합니다. 그러나 302 응답을 받은 클라이언트는 캐시를 유지하고, 이전 위치에서 리소스를 계속 사용할 수 있습니다.

 

303 See Other

303번 상태 코드는 클라이언트가 POST 요청을 보낸 경우에 사용됩니다. 서버는 새로운 리소스를 생성하고, 이 리소스의 위치를 클라이언트에게 알려줍니다. 이후에 클라이언트는 새로운 위치로 GET 요청을 보내야 합니다.

 

304 Not Modified

304번 상태 코드는 클라이언트가 이전에 요청한 리소스가 수정되지 않았을 경우에 사용됩니다. 서버는 클라이언트에게 이전에 전송한 응답의 캐시를 계속 사용하도록 허용합니다.

 

307 Temporary Redirect

307번 상태 코드는 클라이언트가 요청한 리소스가 일시적으로 다른 위치에 있을 때 사용됩니다. 302와 비슷하지만, 클라이언트는 새로운 위치로 리소스 요청을 다시 보내야 합니다. 307은 클라이언트가 이전 요청의 데이터를 그대로 유지하며, 새로운 위치로 요청을 보냅니다.

 

308 Permanent Redirect

308번 상태 코드는 클라이언트가 요청한 리소스가 완전히 새로운 위치로 옮겨졌을 때 사용됩니다. 301과 비슷하지만, 클라이언트는 새로운 위치로 리소스 요청을 다시 보내야 합니다. 308은 클라이언트가 이전 요청의 데이터를 그대로 유지하며, 새로운 위치로 요청을 보냅니다.


400번대 상태 코드

400번대 상태코드는 클라이언트 오류(Client Error)를 나타내며, 서버는 클라이언트의 요청을 처리할 수 없거나 유효하지 않은 요청이 들어온 경우에 발생합니다.

 

400 Bad Request

400번 상태 코드는 클라이언트의 요청이 유효하지 않은 경우에 발생합니다. 예를 들어, 요청 파라미터가 잘못된 경우나 요청 바디의 형식이 올바르지 않은 경우 등이 있습니다.

 

401 Unauthorized

401번 상태 코드는 클라이언트가 인증되지 않은 경우에 발생합니다. 예를 들어, 로그인하지 않은 사용자가 보호된 리소스에 접근하려는 경우에 발생합니다.

 

403 Forbidden

403번 상태 코드는 클라이언트가 요청한 리소스에 대한 권한이 없는 경우에 발생합니다. 예를 들어, 특정 사용자만 접근할 수 있는 리소스에 다른 사용자가 접근하려고 할 때 발생합니다.

 

404 Not Found

404번 상태 코드는 클라이언트가 요청한 리소스가 존재하지 않는 경우에 발생합니다. 예를 들어, 존재하지 않는 URL로 요청이 들어온 경우나 삭제된 리소스를 요청한 경우 등이 있습니다.

 

이러한 400번대 상태코드는 클라이언트에서 발생한 오류이기 때문에, 클라이언트에서 요청을 재전송하거나 요청을 수정하여 다시 시도할 필요가 있습니다.


500번대 상태 코드

500번대 상태코드는 서버 오류(Server Error)를 나타내며, 클라이언트의 요청에 대한 처리 중 오류가 발생했거나 서버 자체의 문제로 인해 발생합니다.

 

500 Internal Server Error

500번 상태 코드는 서버 내부에서 오류가 발생한 경우에 발생합니다. 예를 들어, 서버에서 처리할 수 없는 요청을 받았거나 서버 자체에 문제가 있는 경우 등이 있습니다.

503 Service Unavailable

503번 상태 코드는 서버가 현재 사용 불가능한 상태인 경우에 발생합니다. 예를 들어, 서버가 과부하 상태이거나 유지보수 작업으로 인해 일시적으로 사용이 불가능한 경우 등이 있습니다.

 

이러한 500번대 상태코드는 서버에서 발생한 오류이기 때문에, 클라이언트에서는 재시도를 시도할 수 있지만, 문제가 지속적으로 발생한다면 서버 관리자에게 문의하거나 서비스 제공자에게 문제를 보고해야 합니다.

'CS 지식 > 네트워크' 카테고리의 다른 글

Http 프로토콜 구조  (0) 2023.05.08
HTTP 메소드 및 메소드의 속성  (0) 2023.05.06
HTTP  (0) 2023.05.04
네트워크(TCP/UDP,IP,URI/URL)  (0) 2023.05.04
REST, REST API, RESTful  (3) 2023.01.25