WEB

[WEB] HTTP 상태코드

steadyMan 2022. 8. 7. 23:29

HTTP 상태 코드란? 


클라이언트가 보낸 요청에 대한 처리 상태를 응답에서 알려주는 코드로 5개그룹으로 나누어져 있다.

만일 신규코드일 경우 그룹의 첫번째 숫자로 판단하기 때문에 그룹의 대표 숫자를 잘 유지해야 한다. 

처리결과에 따라 올바른 상태코드를 응답해야 클라이언트가 신뢰하고 사용할 수 있기 때문에

상태 코드를 파악하고 있는 것이 중요하다. 

대표적인 상태코드 


1xx(Information) 

임시적인 응답으로 요청을 받았고 작업을 진행 중임을 알리는 코드로 HTTP 1.0에서 지원하지 않는다. 

100 - Continue

진행 중임을 의미하는 응답코드로 클라이언트가 계속해서 요청을 하거나 이미 요청을 완료한 경우에는 무시해도 됨을 알리는 코드 

 

2xx(Successful) 

클라이언트의 요청을 성공적으로 처리됨을 알리는 코드 

200 - OK

성공적으로 요청을 처리했을때 사용한다. 성공의 의미는 HTTP메소드에 따라 달라진다.

201 - Created

요청이 성공적이였고 그 결과 새로운 리소스가 생성됨을 알리는 코드로 응답헤더 Location속성에 생성된 리소스의

URI를 포함하여 리턴해준다. 

202 - Accepted

요청이 접수되었으나 처리되지 않음을 의미한다. 이것은 다른 프로세스에서 요청을 다루고 있거나 배치 프로세스를 하고 있는 경우를 위해 사용한다. 

204 - No Content

서버가 요청을 성공적으로 수행했지만 요청에 대해 응답 본문에 보낼 데이터가 없을 경우 사용

3xx(Redirection)

요청을 완료하기 위해선 리다이렉션이 이루어져야 할 때 사용한다.  웹 브라우저는 3xx응답코드에 Location 헤더가 있으면

Location의 URL로 리다이렉션을 보낸다. 

영구 리다이렉션 - 특정 리소스의 URI가 영구적으로 이동했을 때 사용

ex ) /movies -> /users

301 - Moved Permanently

이 응답 코드는 요청한 리소스의 URI가 변경되었음을 의미하고 요청 메서드가 GET로 변하며 본문이 제거될 수도 있다. 

308 - Permanent Redirect

301코드와 기능은 같으나 리다이렉트 시 요청 메서드와 본문 유지한다(HTTP 메소드의 변경을 허용하지 않는다)

일시적인 리다이렉션 - 리소스의 URI가 일시적으로 변경될 때 사용 

302 - Found

리다이렉트 시 요청메서드가 GET로 변하고, 본문이 제거될 수도 있을 때 사용한다. 여러 프레임워크에서

리다이렉트 시 302 코드로 응답되는 경우가 많다. 

307 - Temporary Redirect

302와 기능이 동일하나 요청 메서드와 본문이 유지되야한다

303 - See Other

302와 기능이 동일하다. 리다이렉트시 요청 메서드가 GET으로 변경되야한다. 

리다이렉션 시 GET으로 변해도 된다면 302 코드를 사용해도 무관하다. 

기타 리다이렉션

304 - Not Modified

캐시를 사용할 목적으로 사용된다. 클라이언트에게 리소스가 수정되지 않았음을 알려준다. 웹브라우저는 로컬에 저장된 캐시를 재사용한다. 304코드의 응답은 메시지 바디에 데이터를 포함해선 안된다. 

4xx(Client Error)

클라이언트의 잘못된 요청으로 서버가 요청을 수행할 수 없음을 알린다. 오류의 원인이 클라이언트에 있을 때 사용한다. 

ex) 잘못된 주소에 대한 요청, 올바르지 않은 데이터 형식 등..

400 - Bad Request

요청 자체가 잘못되었을 때 사용하는 코드이다 요청 파라미터가 잘못되었거나 API 스펙에 맞지 않을 때 사용한다. 

401 - Unauthorized

인증(Authentication)이 되지 않았음을 알린다. 401 오류 발생 시에는 응답헤더에 WWW-Authenticate속성에 인증방법을 

추가해야한다. 오류 메시지는 Unauthorized(인가되지 않음)이지만 인증되지 않음을 나타낸다. 

403 - Forbidden

서버가 요청 리소스에 대한 접근 권한이 불충분할 경우 사용한다. 

ex) 관리자 페이지 

404 - Not Found

클라이언트가 요청한 리소스가 서버에 없을경우 사용한다. 

5xx(Server Error)

클라이언트의 요청은 정상적이었으나 서버 내부의 문제로 오류가 발생됐을 경우 사용한다. 

500 - Internal Server Error

서버에 오류가 발생하여 요청을 수행할 수 없을 때 사용한다. 각종 에러로 비정상 종료를 할 경우 사용한다. 

503 - Service Unavailable

서버가 일시적으로 사용할 수 없을때 사용한다. 주로 일시적인 과부하, 예정된 작업등으로 잠시 요청을 처리할 수 없을 때 사용된다. 응답 헤더의 Retry-After속성에 복구 시간을 보낼 수도 있다.