RESTful API 设计中如何正确使用 HTTP 协议的 GET 与 POST

阅读时长 8 分钟读完

在 RESTful API 设计中,GET 和 POST 是最常用的 HTTP 方法之一。但是,正确使用这些方法并不是一件简单的事情。本文将探讨 RESTful API 中如何正确处理 GET 和 POST 请求,并提供一些示例代码和最佳实践建议。

GET 请求

GET 是最常用的 HTTP 方法之一,主要用于获取资源。在 RESTful API 中,GET 方法用于检索和查看资源。使用 GET 方法时,可以通过查询字符串参数传递参数,例如:

这个例子中,我们使用 GET 方法获取电子类别下价格低于 1000 的所有产品。在 RESTful API 中,GET 方法应该是幂等的,这意味着对同一个资源的多个 GET 请求应该总是返回相同的结果。例如,如果我们对同一个 URL 发送两个 GET 请求:

那么我们应该总是得到相同的响应。

另外,GET 方法应该只用于检索和查看资源,而不应该用于修改资源。如果需要修改资源,请使用其他 HTTP 方法,例如 POST 或 PUT。

POST 请求

POST 方法用于在服务器上创建新的资源。使用 POST 方法时,应该向服务器提供一个表示资源的表单数据。例如:

这个例子中,我们使用 POST 请求在服务器上创建了一台新的 iPhone X。注意,我们使用了请求体来提供新的资源数据。

在 RESTful API 中,POST 方法可以是非幂等的,这意味着对同一个资源的多个 POST 请求可能会创建多个资源实例。例如,如果我们对同一个 URL 发送两个 POST 请求:

那么我们有可能创建了两台 iPhone X。

另外,POST 方法不应该用于检索和查看资源,而只应该用于创建新的资源。如果需要检索和查看资源,请使用 GET 方法。

最佳实践建议

以下是一些最佳实践建议,可以帮助你更好地使用 GET 和 POST 方法:

  • 使用 GET 方法来检索和查看资源,使用 POST、PUT 或 PATCH 方法来创建、更新或删除资源。

  • 使用幂等的方法来修改资源,例如 PUT 或 PATCH 方法。

  • 使用非幂等的方法来创建新的资源,例如 POST 方法。

  • 在查询字符串中使用简单的参数,例如 ?name=value

  • 使用请求体来提供表单数据,例如 application/x-www-form-urlencodedapplication/json

  • 在响应头中包含资源的状态码,例如 200 OK404 Not Found

  • 在响应体中包含资源的数据,例如 JSON 或 XML 格式的数据。

  • 使用语义化的 URL,例如 /api/products

  • 使用合适的 HTTP 方法来处理请求,例如 GET、POST、PUT 或 DELETE。

  • 避免使用紧凑的 URL,例如 /api/products/123?name=value

  • 使用不同的 HTTP 方法和 URL 来处理不同的资源操作,例如:

    • GET /api/products:检索所有产品
    • GET /api/products/123:检索产品 123
    • POST /api/products:创建新产品
    • PUT /api/products/123:更新产品 123
    • DELETE /api/products/123:删除产品 123

示例代码

下面是一些示例代码,可以帮助你更好地理解 GET 和 POST 方法的使用:

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

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

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

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

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

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

在这个示例代码中,我们使用 Express 框架来创建一个 RESTful API。我们将所有产品存储在内存中,并使用 GET、POST、PUT 和 DELETE 方法来处理不同的资源操作。我们还展示了如何在查询字符串和请求体中使用参数,以及如何在响应头和响应体中使用状态码和数据。

结论

GET 和 POST 是 RESTful API 中最常用的 HTTP 方法之一。正确使用这些方法可以提高 API 的性能和可靠性。在使用这些方法时,请遵循上述最佳实践建议,并尽量使用语义化的 URL 和 HTTP 方法来处理不同的资源操作。

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

纠错
反馈