제로베이스
Status Code 본문
📍 각각의 상태 코드에는 대응되는 상태 메시지가 있다.
모든 상태 코드는 각각 대응하는 상태 메세지를 갖고 있다.
예를 들어, Status Code 200번은 OK, 404번은 NOT FOUND라는 상태 메시지를 갖고 있다. 각 상태 코드의 의미를 모두 외우기는 힘들기 때문에 이러한 상태 메시지는 상태 코드의 의미를 빠르게 파악하는데 도움을 준다.
📍 상태 코드는 100번대 ~ 500번대까지 있다.
1. 100번대
서버가 클라이언트에게 정보성 응답을 줄 때 사용되는 상태 코드들이다.
• 100 Continue : 클라이언트가 서버에게 계속 리퀘스트를 보내도 괜찮은지 물어봤을 때, 계속 리퀘스트를 보내도 괜찮다고 알려주는 상태 코드이다. 예를 들어, 클라이언트가 용량이 좀 큰 파일을 리퀘스트의 바디에 담아 업로드 하려고 할 때 서버에게 미리 괜찮은지를 물어 보는 경우가 있다고 하자, 서버가 이 100번 상태 코드의 리스폰스를 주면 그제서야 본격적인 파일 업로드를 시작한다.
•101 Switching Protocols : 클라이언트가 프로토콜을 바꾸자는 리퀘스트를 보냈을 때, 서버가 '그래요, 그 프로토콜로 전환하겠습니다'라는 뜻을 나타낼 때 쓰이는 상태 코드이다.
2. 200번대
클라이언트의 리퀘스트가 성공 처리되었음을 의미하는 상태 코드들 이다.
• 200 ok : 리퀘스트가 성공적으로 처리되었음을 포괄적으로 의미하는 상태 코드이다. 이때 성공의 의미는 리퀘스트에 있던 메소드의 종류에 따라 다를텐데 GET 리퀘스트의 경우 리소스가 잘 조회되었다는 뜻이고, POST의 경우 새 리소스가 잘 생성되었다. PUT 리퀘스트의 경우 기존 리소스가 잘 수정되었다. DELETE 리퀘스트의 경우 기존 리소스가 잘 삭제 되었다는 뜻이다.
•201 Created : 리퀘스트의 내용대로 리소스가 잘 생성되었다는 뜻이다. POST 리퀘스트가 성공한 경우에 200번 대신 201번이 올 수도 있다.
• 202 Accepted : 리퀘스트의 내용이 일단은 잘 접수 되었다는 뜻이다. 즉 , 당장 리퀘스트의 내용이 처리된 것은 아니지만 언젠가 처리할 것이라는 뜻이다. 리퀘스트를 어느정도 모아서 한번에 실행하는 서버인 경우 등에 이런 응답을 줄 수도 있다.
3. 300번대
클라이언트의 리퀘스트가 아직 처리되지 않았고, 리퀘스트 처리를 원하면 클라이언트 측의 추가적인 작업이 필요함을 의미하는 상태 코드들 이다.
• 301 Moved Permanently : 리소스의 위치가 바뀌었음을 나태낸다. 보통 이런 상태 코드가 있는 리스폰스의 헤드에는 Location이라는 헤더도 일반적으로 함께 포함되어 있다. 그리고 그 헤더의 값으로 리소스에 접근할 수 있는 새 URL이 담겨 있다. 대부분의 브라우저는 만약 GET 리퀘스트를 보냈는데 이런 상태 코드가 담긴 리스폰스를 받게 되면, 헤드에 포함된 Location 헤더의 값을 읽고, 자동으로 그 새 URL에 다시 리퀘스트를 보내는 동작을 수행한다.
• 302 Found : 리소스의 위치가 일시적으로 바뀌었음을 나타낸다. 이말은 지금 당장은 아니지만 나중에는 현재 요청한 URL이 정상적으로 인식 될 것이라는 뜻이다. 이 상태 코드의 경우에도 보통 그 리스폰스의 헤드에 Location헤더가 있고, 여기에 해당 리소스의 임시 URL 값이 있다. 이경우에도 대부분의 브라우저들은 임시 URL로 리다이렉션한다.
• 304 Not Modified : 브라우저들은 보통 한번 리스폰스로 받았던 이미지 같은 리소스들을 그대로 내부에 저장하고 있다. 그리고 서버는 해당 리소스가 바뀌지 않는다면, 리스폰스에 그 리소스를 보내지 않고 304번 상태 코드만 헤드에 담아서 보냄으로써 '네트워크 비용'을 절약하고 브라우저가 저장된 리소스를 재활용 하도록 한다.
4. 400번대
• 400 Bad Request: 말그대로 리퀘스트에 문제가 있음을 나타낸다. 리퀘스트 내부 내용의 문법에 오류가 존재하는 등의 이유로 발생한다.
• 401 Unauthorized: 아직 신원이 확인되지 않은 사용자로부터 온 리퀘스트를 처리할 수 없다는 뜻이다.
• 403 Forbidden: 사용자의 신원은 확인되었지만 해당 리소스에 대한 접근 권한이 없는 사용자라서 리퀘스트를 처리할 수 없다는 뜻이다.
• 404 Not Found: 해당 URL이 나타내는 리소스를 찾을 수 없다는 뜻이다.
• 405 Method Not Allowed : 해당 리소스에 대해서 요구한 처리는 허용되지 않는다는 뜻이다. 만약 어떤 서버의 이미지 파일을 누구나 조회할 수는 있지만 아무나 삭제할 수는 없다고 해보자. GET 리퀘스트는 허용되지만, DELETE 메소드는 허용되지 않는 상황인데 만약 그 이미지에 대한 DELETE 리퀘스트를 보낸다면 이런 상태 코드를 보게될 수도 있다.
• 413 Payload Too Large : 현재 리퀘스트의 바디에 들어있는 데이터의 용량이 지나치게 커서 서버가 거부한다는 뜻이다.
• 429 Too Many Requests : 일정 시간 동안 클라이언트가 지나치게 많은 리퀘스트를 보냈다는 뜻이다 서버는 수많은 클라이언트들의 리퀘스트를 정상적으로 처리해야 하기 때문에 특정 클라이언트에게만 특혜를 줄 수는 없다. 따라서 지나치게 리퀘스트를 많이 보내는 클라이언트에게는 이런 상태 코드를 담은 리스폰스를 보낼 수도 있다.
5. 500번대
서버 쪽의 문제로 인해 리퀘스트를 정상적으로 처리할 수 없음을 의미하는 상태 코드들이다.
• 500 Internal Server Error : 현재 알 수 없는 서버 내의 에러로 인해 리퀘스트를 처리할 수 없다는 뜻입니다.
• 503 Service Unavailable : 현재 서버 점검 중이거나, 트래픽 폭주 등으로 인해 서비스를 제공할 수 없다는 뜻입니다.
'웹 개발 기본기' 카테고리의 다른 글
then 메소드 이해하기 (0) | 2023.08.26 |
---|---|
비동기 실행 함수들 (0) | 2023.08.26 |
동기 실행과 비동기 실행 (0) | 2023.08.26 |
URL과 리퀘스트 (0) | 2023.08.26 |
fetch 함수 (0) | 2023.08.26 |