RESTful API 开发的十种常见错误及其解决方案

阅读时长 9 分钟读完

RESTful API 是现代 web 应用程序中最常用的一种服务端架构形式。RESTful API 通过 HTTP 请求提供了一种简单的方式来连接前后端。但是在实际开发中,RESTful API 开发人员可能会犯一些常见的错误,在这篇文章中,我们将介绍其中的十种错误,并提供相应的解决方案。

1. 使用不恰当的 HTTP 动词

RESTful API 通过 HTTP 请求进行通信,而 HTTP 协议定义了一系列的请求方法,也就是常用的 HTTP 动词,例如 GET、POST、PUT、DELETE 等等。RESTful API 开发者应该针对资源区分使用恰当的请求方法。但是,有时候开发人员会使用不恰当的请求方法,例如使用 POST 请求获取资源,或者使用 GET 请求更新资源。这些错误不仅会导致代码逻辑混乱,而且可能导致可靠性问题。

解决方案

  • GET: 用于获取资源,不会对服务器上的资源进行更改。
  • POST: 用于向服务器发送数据以创建新资源。
  • PUT: 用于更新服务器上的资源。
  • DELETE: 用于删除服务器上的资源。

确保您的代码在请求资源时正确使用 HTTP 动词。

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

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

2. 使用不恰当的 HTTP 状态码及响应体

在任何 RESTful API 请求之后,服务器都应该返回适当的状态码和响应体来描述请求的结果。然而,一些开发人员可能会使用不正确的状态码,例如在处理错误时返回 200 状态码、在 POST 请求中返回的响应体为空等等。这可能会导致潜在的安全问题并交付到客户端的响应无法处理请求正确的方式。

解决方案

您应该标识您的资源的状态并用正确的状态码响应请求,例如:

  • 200 OK:正确响应 GET、DELETE、PUT、PATCH 请求或者创建资源的 POST 请求。
  • 201 Created:正确响应 POST 请求。
  • 204 No Content:正确响应 DELETE 请求。
  • 400 Bad Request:请求的参数不符合 API 的规范。
  • 401 Unauthorized:API 无法认证您的请求。
  • 403 Forbidden:您无权访问请求的资源或者操作已被禁止。
  • 404 Not Found:请求的 URL 不是有效的 API 路径,或者请求的资源不存在。
  • 405 Method Not Allowed:请求的方法不允许。
  • 500 Internal Server Error:服务器遇到了一个错误。

同时请求用恰当的响应体响应请求:

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

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

3. API 的安全问题

安全问题是 RESTful API 开发者面临的重要问题之一。如果您开发的代码出现安全漏洞,那么其将无法保证已经进入您的系统的数据的安全性。例如您未能正确验证用户请求,未正确处理敏感信息、开放了未受保护的端点等等。攻击者可以利用这些漏洞来攻击您的系统和客户数据。

解决方案

解决 API 安全性问题的最佳方式是引入安全性验证机制、访问控制以及加密。最好还要使用合适的身份验证机制来保护数据的安全性,例如 OAuth2 或 JWT。您应该定期对您的 API 进行漏洞扫描,并且运行 API 内核的最新版本,以确保安全问题已得到纠正并且不会发生新问题。

4. 缺乏文档

RESTful API 代码应该包含清晰的文档,这可以帮助客户端开发人员正确使用您的 API 并提高应用程序的可扩展性。如果您的代码没有文档,客户端访问您的 API 将会是非常麻烦的。

解决方案

为您的 API 编写文档并包含您的 API 路径、请求示例和响应模式的详细信息。提供一份简洁明了的 API 文档,这将有助于客户端开发人员正确使用您的 API 和尽可能减少错误。

5. 路径设计不恰当

API 路径应该设计得尽可能简洁、易于理解,路径应该遵循 RESTful 标准。不幸的是,在一些开发中,API 路径可能会设计得非常混乱,甚至没有遵循标准。

解决方案

设计一个具有可读性强的 API 路径,并遵循 RESTful API 设计的规范。这将是您的 API 路径更具可读性,并使它更容易维护和推广。例如:

  • GET /users: Get all users
  • GET /users/1: Get a single user with ID 1
  • POST /users: Create a new user
  • PUT /users/1: Update user with ID 1
  • DELETE /users/1: Delete user with ID 1

6. 不恰当地处理异步操作

异步操作是 JavaScript 中非常常见的一种设计模式,可能还被用于在 RESTful API 中。然而,开发人员可能会忽略 JavaScript 的异步本质,甚至未能正确处理 RESTful API 中的异步操作,可能会导致代码并发性能下降。

解决方案

在 RESTful API 中执行异步操作时,要确保您的代码考虑到异步操作的本质。您应该使用 Promise 或 async/await 模式等适当工具来处理异步操作。这将确保代码能够正确地运行,在并发场景下性能得到充分利用。

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

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

7. 不正确地处理时间戳

在 RESTful API 中,时间戳是指客户端和服务器之间交换的时间。在 JavaScript 中,时间戳通常是 Unix 时间戳,即从 1970 年 1 月 1 日 UTC 开始的毫秒数。然而,一些开发者可能对时间戳产生误解,或者不正确地计算日期。

解决方案

确保您的代码正确处理时间戳。您应该正确地解析时间戳,以确保它们与使用相同的时区和格式保持一致。使用 JavaScript 中的 date 对象进行计算时,应该注意使用 UTC 时间,以便正确地计算日期和时间。

8. 不正确地处理错误

当 RESTful API 中出现错误时,客户端应该能够正确地识别错误并发出警告或错误消息。然而,一些开发者可能并没有处理错误或者处理方式不恰当,这将导致误解、信息不全或系统崩溃。

解决方案

在处理错误时,您应该尽可能多的考虑到可能出现的错误情况。包括未授权的访问、资源不存在、服务器错误等情况。您应该准确地描述错误,并提供适当的 HTTP 状态码。如果可能,您还应该指示可能解决该问题的提示信息。

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

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

9. 使用持久化驱动程序设计问题

在 RESTful API 开发中,数据持久化非常重要。但是,一些开发人员可能使用不恰当的持久化驱动程序,这可能导致错误和性能下降,因为不合理的数据访问方式可能会导致在访问大量数据时卡顿或者服务崩溃。

解决方案

选择适合您的情况的持久化驱动程序。如果您不确定,Redis 和 MongoDB 都是在 RESTful API 开发中相当流行的选项。确保您选择的存储适合您的数据模型。如果您需要存储大量数据,请考虑使用分布式存储或者选用 Redis 的服务器或集群模式等方式。

10. 不测试您的代码

最后一点必须强调:应该测试您的 API 代码。没有正确测试 API 的代码很容易导致意外问题和性能瓶颈,也可能会引发不必要的安全问题。

解决方案

编写测试套件以确保您的代码是正确的并且安全。

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

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

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

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

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

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

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

结论

在 RESTful API 开发中,遵循这些解决方案可以帮助您更好地组织和管理您的代码,并确保您的 API 正常运行,您的应用程序也将获得更好的扩展性和性能。通过避免这些问题,您将更轻松地发布和推广您的 RESTful API。

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

纠错
反馈