모든 개발자를 위한 HTTP 웹 기본 지식 4. HTTP 상태코드
인프런 강의 모든 개발자를 위한 HTTP 웹 기본 지식 수강내용 정리
HTTP 상태코드
클라이언트가 요청을 보내면 보낸 요청의 처리 상태를 서버의 응답 메세지에서 코드형식으로 알려준다.
클라이언트가 인식할 수 없는 상태코드를 반환받는다면 가장 앞자리의 코드로 해석해서 처리한다.
1XX
informational 으로 요청이 수신되어 처리중을 의미한다.
거의 사용이 되지 않는다.
2XX
successful 으로 요청이 정상으로 처리되었음을 의미한다.
-
200 OK 정상처리완료
주로 GET 요청이 정상적으로 처리되어 데이터를 응답해줄때 사용한다. -
201 Created 생성처리완료
주로 POST 요청이 정상적으로 처리되어 서버에서 리소스를 생성했음을 응답할때 사용한다.
헤더의 Location 필드에 생성된 리소스의 경로를 전달한다. -
202 Accepted
요청이 접수되었으나 처리가 완료되지 않았음을 의미한다.
지금 요청이 접수되었으나 일정 시간 후 배치 프로세스가 요청을 처리할 예정일 때 사용한다. -
204 No Content 서버에서 요청을 성공적으로 수행했지만 응답 시 BODY 에 보낼 데이터가 없을 때 사용한다.
예를 들어 웹 문서의 편집기에서 save 버튼 클릭 시 같은 화면을 유지하고 결과 값을 반환받지 않아도 될 때 사용한다.
BODY 가 없어도 응답코드만으로 성공을 인식할 수 있게 한다.
3XX
redirection 추가 행동이 필요해서 요청이 완료되지 않았음을 의미한다.
웹 브라우저는 3XX 응답에 Location 헤더가 있으면 해당 경로로 이동한다.
리다이렉션은 URI 가 영구적으로 이동했음을 의미하는 영구 리다이렉션, 리소스의 URI 가 일시적으로 변경되었음을 의미하는 일시 리다이렉션, 특수 리다이렉션으로 나뉜다.
-
301 Moved Permanently [영구]
해당 경로는 더이상 사용되지 않으므로 다른 경로로 이동해야 할 때 사용한다.
검색 엔진 등에서도 변경이 인지된다.
새로운 경로에서 리다이렉트 시 메서드가 GET 으로 변경되고 BODY 가 제거될 수 있다. -
308 Permanent Redirect [영구]
301 과 기능은 같으나 새로운 경로에서 리다이렉트 요청 시 메서드와 BODY 를 유지한다. -
302 Found [일시]
이동은 하지만 일시적으로 변경된 URI 이므로 검색엔진 등에서는 URL 을 변경하면 안될 때 사용한다.
새로운 경로에서 리다이렉트 시 메서드가 GET 으로 변경되고 BODY 가 제거될 수 있다. -
307 Temporary Redirect [일시]
302 와 기능은 같으나 리다이렉트 요청 시 메서드와 BODY 가 변경되지 않고 유지해야 할 때 사용한다. -
303 See Other [일시] 302 와 기능은 같으나 리다이렉트 요청 시 메서드를 GET 으로 변경해야 할 때 사용한다.
-
304 Not Modified [특수]
리소스가 수정되지 않아서 클라이언트에게 캐시로 리다이렉트 하기를 명령할때 사용한다.
조건부 GET, HEAD 요청 시 사용하며, 로컬 캐시를 사용해야 하므로 응답에 BODY 를 포함하지 않는다.
4XX
클라이언트의 오류로 잘못된 문법 등으로 서버가 요청을 수행할 수 없음을 의미한다.
클라이언트의 요청이 잘못되었으므로 동일하게 재시도 시 무조건 실패한다.
-
400 Bad Request
요청 파라미터가 잘못되었거나 API 스펙이 맞지 않아서 클라이언트에서 요청 내용을 재검토해야 할 때 사용한다. - 401 Unauthorized
클라이언트가 리소스에 대한 인증(Authentication)이 필요함을 의미한다.
클라이언트에서는 WWW-Authenticate 헤더와 함께 인증 방법을 설명해야 한다.인증 Authentication : 로그인, 본인 확인
인가 Authorization : 접근 권한
이름이 Unauthorized 이지만 인가가 아닌 인증에 대한 오류 반환이다. -
403 Forbidden
서버가 요청을 이해했지만 승인을 거부했을 때, 예를 들어 인증은 되었지만 접근 권한이 없을 때 사용된다. - 404 Not Found
요청 리소스를 서버에서 찾을 수 없을 때, 클라이언트가 잘못된 경로로 요청했을 때 사용한다.
또는 클라이언트가 권한이 부족한 리소스에 접근 시 해당 리소스 자체를 숨기고 싶을 때 사용한다.
5XX
서버 오류로 서버가 정상적으로 요청을 처리할 수 없음을 의미한다.
클라이언트의 요청은 오류가 없으므로 동일하게 재시도 시 서버의 상태에 따라 성공할 가능성이 있다.
-
500 Internal Server Error
서버 내부 문제로 오류가 발생했을 때 사용한다. -
503 Service Unavailable
서버가 일시적인 과부하 또는 예정된 작업으로 일시적으로 요청을 처리할 수 없을 때 사용한다.
헤더의 Retry-After 필드로 복구 예정 시간을 전달할 수 있다.