제로베이스

Status Code 본문

웹 개발 기본기

Status Code

코드킴 2023. 8. 26. 17:35

📍 각각의 상태 코드에는 대응되는 상태 메시지가 있다.

 

모든 상태 코드는 각각 대응하는 상태 메세지를 갖고 있다.

예를 들어, 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