RESTful API 是一种常用的 Web API 设计风格,其核心理念包括资源、URI、HTTP 动词和状态码等。其中,状态码是 RESTful API 中十分重要的一部分,它反映了服务器端对客户端请求的处理结果。本文将详细介绍 RESTful API 中常用的状态码及其含义,以及如何正确地使用它们。
常见状态码及含义
RESTful API 中常用的状态码包括:
- 1xx:信息提示
- 2xx:成功处理请求
- 3xx:重定向
- 4xx:客户端请求错误
- 5xx:服务器端错误
下面分别介绍这些状态码的含义。
1xx:信息提示
100 Continue
客户端发送请求时,如果请求头部包含 Expect 字段且值为 100-continue,则服务器将返回此状态码,表示客户端可以继续发送请求体。
101 Switching Protocols
表示服务器已经理解了客户端的 Upgrade 请求头,并已经切换到了不同的协议。
102 Processing
表示服务器已经接收到请求并正在处理请求。
2xx:成功处理请求
200 OK
表示请求已经成功处理,并返回响应结果。
201 Created
表示请求已经成功处理,并创建了一个新资源。
202 Accepted
表示请求已经被接受,但还没有被处理完成。可以用于异步处理场景。
204 No Content
表示请求已经成功处理,但没有返回任何内容。
3xx:重定向
300 Multiple Choices
表示请求的多个选择都符合要求,服务器给出列表并让客户端选择一个进行访问。
301 Moved Permanently
请求的资源已经被移动到另一个 URI,客户端应该使用新 URI 进行访问。
302 Found
表示请求的资源暂时被移动到了另一个 URI,客户端应该使用新 URI 进行访问。
303 See Other
表示客户端的请求应该重定向到另一个 URI,通常用于 POST 请求的重定向。
304 Not Modified
表示资源未修改,客户端可以继续使用缓存中的资源。
4xx:客户端请求错误
400 Bad Request
请求格式错误,服务器无法理解。
401 Unauthorized
请求需要用户认证,但用户没有登录或登录凭证无效。
403 Forbidden
服务器拒绝了客户端请求,请求未被授权。
404 Not Found
请求的资源不存在。
405 Method Not Allowed
请求方法不被支持,服务器无法处理。
406 Not Acceptable
请求的资源类型不被支持。
407 Proxy Authentication Required
请求需要代理身份验证。
408 Request Timeout
请求超时。
409 Conflict
请求的资源冲突,例如更新资源时版本不匹配。
410 Gone
请求的资源已经不存在。
5xx:服务器端错误
500 Internal Server Error
服务器内部错误。
501 Not Implemented
请求的功能尚未实现。
502 Bad Gateway
服务器作为网关或代理时收到了无效的响应。
503 Service Unavailable
服务器暂时无法处理请求,例如因为负载过大或维护中。
504 Gateway Timeout
服务器作为网关或代理时请求超时。
505 HTTP Version Not Supported
HTTP 版本不被支持。
如何正确使用状态码
在 RESTful API 中,使用正确的状态码非常重要,它可以帮助客户端正确地处理响应结果,并且可以提高 API 的可用性和可维护性。下面介绍一些如何正确使用状态码的建议。
- 返回正确的状态码
服务器应该根据实际情况返回正确的状态码,并且应该尽可能使用标准状态码,而不是自定义状态码。例如,对于资源不存在的情况,应该返回 404 Not Found 而不是 200 OK。
- 返回正确的响应格式
服务器应该返回正确的响应格式,例如使用 JSON、XML 等格式。如果客户端请求某个资源是 JSON 格式,服务端返回时也应该使用 JSON 格式。
- 在响应头中设置必要的信息
服务器应该在响应头中设置必要的信息,例如 Content-Type、Content-Length 等。这样客户端就可以正确处理响应结果。
下面是一个使用正确状态码的示例代码:
// javascriptcn.com 代码示例 app.get('/users/:id', function(req, res) { var id = req.params.id; var user = users[id]; if (user) { res.status(200).json(user); } else { res.status(404).send('User not found'); } });
在这个示例中,如果用户存在,则返回 200 OK 状态码和用户信息;如果用户不存在,则返回 404 Not Found 状态码和错误信息。客户端可以根据状态码来正确处理响应结果。
总结
状态码是 RESTful API 中非常重要的一部分,它反映了服务器对客户端请求的处理结果。本文介绍了 RESTful API 中常用的状态码及其含义,并给出了使用状态码的建议。正确使用状态码可以提高 API 的可用性和可维护性,帮助客户端正确地处理响应结果。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65362dde7d4982a6ebe14024