在开发 RESTful API 时,状态码的正确使用非常重要。状态码可以传达给客户端当前请求的处理结果,从而使客户端能够准确地理解和处理响应。
本文将介绍 RESTful API 中常用的状态码,以及它们的含义和正确的使用方法,以帮助开发者编写高质量、易于理解的 API 代码。
常用状态码
以下是RESTful API 中常用的状态码及其含义:
- 200 OK:请求成功;
- 201 Created:已创建。在 POST 请求时使用,表示已经成功创建了资源;
- 204 No Content:没有内容。用于 DELETE 请求,表示删除成功;
- 400 Bad Request:请求有误。客户端发送的请求无效;
- 401 Unauthorized:未授权,需要身份验证;
- 403 Forbidden:禁止访问。客户端已经认证,但是无法获得请求的资源;
- 404 Not Found:未找到。客户端请求的资源不存在;
- 405 Method Not Allowed:不允许使用该方法。请求使用的方法不支持该资源;
- 409 Conflict:冲突。客户端发送的请求和服务器上现有的资源发生冲突;
- 500 Internal Server Error:服务器出错。服务器无法处理客户端请求;
正确使用状态码
我们应该根据 HTTP 规范和 API 设计规范来正确地使用状态码。下面是一些使用状态码的最佳实践。
200 OK
当请求成功时,应该返回 200 OK 状态码。一般来说,应该将资源的实体作为响应的主体,并在响应头中添加必要的元数据。
例如,你可以在响应头中包含资源的版本号、上次修改时间或资源的其他元数据。
-- -------------------- ---- ------- -------- --- -- ------------- ---------------- -------------- ------------ -------------- ---- -- --- ---- -------- --- - ----- ------ ------- ------- ------ --- -------- ------------------ -
201 Created
当创建新资源时,应该返回 201 Created 状态码。在响应头中应该包含新资源的位置和必要的元数据。
例如,创建一个新的用户账户时:
-- -------------------- ---- ------- -------- --- ------- --------- ---------- ------------- ---------------- - ----- ------ ------- ------- ------ --- -------- ------------------ -
204 No Content
当对资源进行 DELETE 操作时,应该返回 204 No Content 状态码。在这种情况下,响应主体应该为空,因为已删除的资源不存在。
HTTP/1.1 204 No Content
400 Bad Request
当请求无效时,应该返回 400 Bad Request 状态码。在响应主体中应该包含一些错误信息,以帮助客户端理解发生了什么错误。
例如,当客户端发送的请求中包含无效的 JSON 数据时:
HTTP/1.1 400 Bad Request Content-Type: application/json { "error": "Invalid JSON data" }
401 Unauthorized
当用户未经授权时,应该返回 401 Unauthorized 状态码。客户端可以通过提供身份验证凭据来重新尝试该请求。
HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="User authentication required"
403 Forbidden
当用户没有权限访问资源时,应该返回 403 Forbidden 状态码。
HTTP/1.1 403 Forbidden Content-Type: application/json { "error": "You don't have permission to access this resource." }
404 Not Found
当客户端尝试访问不存在的资源时,应该返回 404 Not Found 状态码。
HTTP/1.1 404 not found Content-Type: application/json { "error": "Resource not found" }
405 Method Not Allowed
当客户端使用不受支持的 HTTP 方法时,应该返回 405 Method Not Allowed 状态码。
HTTP/1.1 405 Method Not Allowed Allow: GET, POST
409 Conflict
当客户端请求和现有资源发生冲突时,应该返回 409 Conflict 状态码,以便客户端了解情况并采取必要的措施。
HTTP/1.1 409 Conflict Content-Type: application/json { "error": "Resource already exists" }
500 Internal Server Error
当服务器无法处理客户端请求时,应该返回 500 Internal Server Error 状态码。
HTTP/1.1 500 Internal Server Error Content-Type: application/json { "error": "Internal server error" }
总结
在 RESTful API 中,正确使用状态码可以让客户端了解到他们操作的结果以及如何解决错误。通过使用适当的状态码、带有正确的元数据的响应头和适当的响应主体,可以使 RESTful API 更加易于使用和理解。
建议您在开发RESTful API时,遵循HTTP规范,使用最佳实践,并为客户端提供清晰的错误信息。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6497e06248841e98944e8667