4.1 상태 코드는 서버로부터 리퀘스트 결과를 전달한다

클라이언트가 서버를 향해 리퀘스트를 보낼 때 서버에서 그 결과가 어떻게 되었는지 알려주는 것이 상태 코드의 역할이다. 서버가 리퀘스트를 정상적으로 처리했는지 아닌지 확인할 수 있다.

상태 코드는 200 OK 와 같이 3자리 숫자와 설명으로 나타낸다. 숫자의 첫 번째 자리는 리스폰스의 클래스를 의미하는데 나머지 2자리는 분류가 없다. 이 리스폰스의 클래스는 다음과 같이 5개가 정의되어 있다.

클래스 설명
1xx Informational 리퀘스트를 받아들여 처리중
2xx Success 리퀘스트를 정상적으로 처리했음
3xx Redirection 리퀘스트를 완료하기 위해서 추가 동작이 필요
4xx Client Error 서버가 리퀘스트를 이해 하지못함
5xx Server Error 서버가 리퀘스트 처리를 실패

클래스의 정의만 지킨다면 RFC2616에서 정의된 상태 코드를 변경하거나 서버 독자의 상태 코드를 만들어도 상관없다.

4.2 2xx 성공(Success)

2xx 리스폰스는 리퀘스트가 정상으로 처리되었음을 나타낸다.

4.2.1 200 OK

클라이언트가 보낸 리퀘스트를 서버가 정상 처리하였음 을 나타낸다. 리스폰스에서 상태 코드와 함께 되돌아오는 정보는 메소드에 따라 다르다. 예를 들어, GET 메소드의 경우에는 리퀘스트된 리소스에 대응하는 엔티티가 리스폰스로 보내지고 HEAD 메소드의 경우에는 리퀘스트된 리소스에 대응하는 엔티티 헤더 필드가 메시지 바디를 동반하지 않고 리스폰스로 되돌아온다.

⇒ 바디로 응답하는 데이터가 존재한다.

4.2.2 204 No Content

서버가 리퀘스트를 받아서 처리하는 데는 성공했지만 리스폰스에 엔티티 바디를 포함하지 않는 경우 이다. 이것은 클라이언트에서 서버에 정보를 보내는 것으로 만족하고, 클라이언트에 대해서 새로운 정보를 보낼 필요가 없는 경우에 사용된다.

⇒ 바디에 데이터가 존재하지 않는다. POST 요청으로 리소스를 생성했을 경우에 클라이언트로 되돌려줄 데이터가 없으면 204 를 반환한다.

4.2.3 206 Partial Content

범위가 지정된 리퀘스트에 의해서 서버가 부분적 GET 리퀘스트를 받았음을 나타낸다. 리스폰스에는 Content-Range 로 지정된 범위의 엔티티가 포함된다.

3.5 일부분만 받는 레인지 리퀘스트 항목 참고

제3장 HTTP 정보는 HTTP 메시지에 있다

4.3 3xx 리다이렉트(Redirection)

3xx 리스폰스는 리퀘스트가 정상적으로 처리를 종료하기 위해 브라우저 측에서 특별한 처리를 수행해야 함을 나타낸다.

4.3.1 301 Moved Permanently

리퀘스트된 리소스에는 새로운 URI 가 부여되어 있기 때문에 이후로는 그 리소스를 참조하는 URI 를 사용해야 한다는 것을 나타낸다.