3.2.2.4. 상태 코드
메서드가 서버에게 무엇을 해야 하는지 말해주는 것처럼, 상태 코드는 클라이언트에게 무엇이 일어났는지 말해준다.
상태 코드는 응답의 시작줄에 위치한다.
예를 들어, 'HTTP/1.0 200 OK'라는 줄에서 상태 코드는 200이다.
클라이언트가 HTTP 서버에게 요청 메시지를 보낼 때, 많은 일이 일어난다.
만약 운이 좋다면 요청은 완전히 성공할 것이다.
그러나 항상 운이 좋을 수는 없다.
서버는 요청한 리소스가 발견되지 않았거나, 그 리소스에 접근할 권한이 없거나, 어쩌면 그 리소스가 다른 곳으로 옮겨졌다고 알려올 수도 있다.
상태 코드는 각 응답 메시지의 시작줄에 담겨 반환된다.
숫자로 된 코드와, 문자열로 되어 있어서 사람이 이해하기 쉬운 메시지 두 형태 모두로 반환된다.
사유 구절이 사람에게 쉽게 읽히는 한편, 숫자로 된 코드는 프로그램이 에러를 처리하기 쉽다.
상태 코드들은 세 저리 숫자로 된 그들의 코드값을 기준으로 묶인다.
200에서 299까지의 상태 코드는 성공을 나타낸다.
300에서 399까지의 코드는 리소스가 옮겨졌음을 뜻한다.
400에서 499까지의 코드는 클라이언트가 뭔가 잘못된 요청을 했음을 의미한다.
500에서 599까지의 코드는 서버에서 뭔가 실패했음을 의미한다.
다음 표는 상태 코드의 종류를 보여주고 있다.
전체 범위 | 정의된 범위 | 분류 |
---|---|---|
100-199 | 100-101 | 정보 |
200-299 | 200-206 | 성공 |
300-399 | 300-305 | 리다이렉션 |
400-499 | 400-415 | 클라이언트 에러 |
500-599 | 500-505 | 서버 에러 |
(상태 코드의 종류)
현재 버전의 HTTP는 각 상태 분류에 대해 적은 수의 코드만을 정의했다.
프로토콜이 진화하면서, 더 많은 상태 코드가 HTTP 명세에 공식적으로 정의될 것이다.
만약 당신이 인식할 수 없는 상태 코드를 받게 되면, 누군가가 현재 프로토콜의 확장으로 그것을 정의했을 가능성이 있다.
그 상태 코드를 그것이 포함되는 범주의 일반적인 구성원으로 가정하고 다루어야 한다.
예를 들어, 만약 상태 코드 515(위 표에 나열된 5XX 코드의 정의된 범위에서 벗어나는)를 받게 되면, 그 응답을 다른 5XX 메시지들과 마찬가지로 서버 에러를 의미하는 것으로 간주하고 다루어야 한다.
아래 표는 만날 수 있는 가장 흔한 상태 코드 중 몇 가지를 나열한다.
우리는 모든 HTTP 상태 코드를 이 장의 뒷부분에서 자세히 설명할 것이다.
상태 코드 | 사유 구절 | 의미 |
---|---|---|
200 | OK | 성공! 요청한 모든 데이터는 응답 본문에 들어있다. |
401 | Unauthorized | 사용자 이름과 비밀번호를 입력해야 한다. |
404 | Not Found | 서버는 요청한 URL에 해당하는 리소스를 찾지 못했다. |
(많이 쓰이는 상태 코드들)