3.2 状态代码
在前面HTTP一节的例子中,服务器对请求
GET /index.html
回复了一个状态代码200,表示“没问题”。除了200,HTTP还定义了一系列的状态代码,各有不同含义,如404表示“请求的资源不存在”,500表示一个服务器错误等。这些代码分为以下几类:
- 1XX系列代码表示一个中间状态(provisional response),不常见。
- 2XX系列代码表示成功,如200。另外还有一些2XX代码对“成功”有更具体的定义和行为,比如:201表示成功创建了一个资源;204表示请求被成功处理但是应答不带有任何消息正文。
- 3XX系列表示重定向(redirection),客户端在收到这个代码后应该根据服务器的指示(通过一个Location应答头)向一个新的URL发起GET请求。
- 4XX系列表示客户端错误,比如404表示所请求的资源不存在,403表示客户端没有权限访问所请求的资源。
- 5XX系列表示服务器端错误,如500(服务器不必详细给出错误的原因)。
这篇Wiki文档对HTTP状态代码做了更多说明:https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
需要注意的是:服务器回复的状态代码(status code)跟请求的方法(method)有紧密的关联——方法决定了哪些代码是合理的,哪些不合理。比如对一个GET或DELETE请求,返回201是不合理的。这在设计RESTful Web API时尤为重要。