RESTful API 中的状态码

阅读时长 5 分钟读完

介绍

RESTful API 是一种基于 HTTP 的 Web API,具有良好的可扩展性和简洁性。状态码是 RESTful API 中的一部分,用于表示请求的处理结果。在使用 RESTful API 进行开发时,了解常用的状态码可以帮助我们更好地处理 API 的返回结果,从而提高系统的稳定性和可靠性。

本文将详细介绍 RESTful API 中常见的状态码及其含义。同时,为了增加文章的实用性,我们将对每个状态码给出示例代码,并结合实际情况,讲解如何在项目中使用状态码进行错误处理。

常见状态码

1XX - 信息性状态码

1XX 状态码表示客户端发送的请求已被服务器收到,但仍处于处理中。这些状态码是信息性的,通常不需要进一步处理。

100 - 继续

客户端可以继续发送请求。例如,当客户端向服务器发送一个包含请求体的请求时,会先发送一个带有 100 状态码的请求,告知服务器可以继续接收请求体内容。

101 - 切换协议

服务器正在切换协议,例如从 HTTP 切换到 WebSocket。

2XX - 成功状态码

2XX 状态码表示服务器已成功接收并处理了客户端发起的请求,并返回了相应的内容。

200 - OK

请求已成功处理,并返回请求结果。

201 - Created

请求已成功处理,并创建了新的资源。通常在 POST 请求中使用。

204 - No Content

请求已成功处理,但没有返回内容。通常用于删除资源,或更新资源时不需要返回任何内容的情况。

3XX - 重定向状态码

3XX 状态码表示需要客户端进一步处理才能完成请求,通常是重定向。

301 - Moved Permanently

请求的资源已经被永久移动到新位置。

302 - Found

请求的资源已经临时移动到新位置。

304 - Not Modified

客户端发送的请求中包含 If-Modified-Since 或 If-None-Match 头,并且资源未被修改。

4XX - 客户端错误状态码

4XX 状态码表示客户端发送的请求有误,服务器无法处理。

400 - Bad Request

请求有语法错误或参数错误。

401 - Unauthorized

需要认证或缺少认证信息。

403 - Forbidden

请求被服务器拒绝,没有权限访问该资源。

404 - Not Found

请求的资源没有找到。

422 - Unprocessable Entity

请求的参数未通过验证,无法处理请求,例如请求体中有缺失的必选参数,或某个参数的值不符合要求。

5XX - 服务器错误状态码

5XX 状态码表示服务器在处理请求时出现错误。

500 - Internal Server Error

服务器内部错误。

502 - Bad Gateway

服务器作为网关或代理,从上游服务器接收到无效的响应。

503 - Service Unavailable

服务器无法处理请求,通常是由于服务器过载或维护。

错误处理示例

在实际项目中,错误处理是必不可少的一部分。使用正确的状态码可以帮助我们更好地处理错误,提高系统的可维护性。下面是一个示例代码,演示了如何在 Express 中使用状态码进行错误处理:

-- -------------------- ---- -------
----- ------- - -------------------
----- --- - ----------

-- -- --- --
------------- ---- ----- -- -
  ------------------------- --------
---

-- ------
------------- ---- ---- ----- -- -
  -------------------------
  ------------------------------ ------ --------
---

-----------------

在这个示例中,我们使用了 Express 的中间件机制,拦截了所有请求。如果请求的资源不存在,我们就返回状态码 404,表示资源未找到。如果发生了其它错误,我们就返回状态码 500,并打印错误信息。这样的做法可以让我们在客户端获取到正确的状态码,同时也和用户友好,减少了用户的困惑。

结论

本文详细介绍了 RESTful API 中常见的状态码及其含义。当我们使用 RESTful API 进行开发时,正确使用状态码可以帮助我们更好地处理请求的结果,从而提高系统的可维护性和可靠性。希望本文可以对读者有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6708efb3d91dce0dc87551f4

纠错
反馈