如何区分 RESTful API 中的 PUT 和 PATCH 请求

阅读时长 5 分钟读完

在 RESTful API 中,PUT 和 PATCH 是两种用于修改资源的 HTTP 方法。它们在功能上类似,都可以用于更新资源,但是它们的行为有所不同。在设计 RESTful API 时,正确区分 PUT 和 PATCH 请求是非常重要的,本文将详细解释如何区分它们,并给出实际的代码示例。

PUT 方法

PUT 方法表示“替换”资源。它用于完全替换资源的全部内容。PUT 请求需要提供完整的资源表示,包括那些不需要更改的部分。如果客户端只提供了部分资源表示,服务器必须将缺失的部分视为删除操作。

例如,我们有一个用户资源:

如果客户端想要修改用户的信息,可以使用 PUT 方法,将完整的用户信息提交到服务器:

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

-
  ----- --
  ------- ------
  ------ ---
  -------- -----------------
-
展开代码

服务器将完全替换用户信息,并返回 200 状态码。

PATCH 方法

PATCH 方法表示“修改”资源。它用于部分更新资源内容。PATCH 请求只需要提供修改的部分资源表示,服务器将保存原始资源的其余部分不变。

例如,如果客户端只想修改用户的姓名和年龄,可以使用 PATCH 方法:

服务器只会修改提交的字段,并返回 200 状态码。

如果客户端想要删除用户的邮箱,可以将邮箱置为 null,使用 PATCH 方法:

服务器将只删除邮箱字段,并返回 200 状态码。

区分 PUT 和 PATCH

PUT 和 PATCH 方法在 API 接口设计时需要正确区分,以确保操作行为符合预期。下面是一些区分 PUT 和 PATCH 方法的技巧。

PUT 用于完全替换,PATCH 用于局部更新

PUT 方法用于整个资源的替换,PATCH 方法用于部分资源的修改。如果客户端需要更改一项或几项属性,而不是替换整个资源,应该使用 PATCH 方法。

PUT 提交的数据必须是完整的资源表示

PUT 方法需要提交完整的资源表示。如果部分信息缺失,服务器会将其视为删除操作。但是在实际应用中,客户端通常无法提供完整的资源表示,此时应该使用 PATCH 方法。

PATCH 方法需要支持增量更新

在 PATCH 方法中,只有更改的字段会被提交到服务器。应该确保服务器能够正确处理增量更新,而不是简单地替换传递的值。

操作的语义应该与 HTTP 动词相一致

HTTP 动词表达了操作的语义。PUT 和 PATCH 方法应该与其所表示的操作语义一致。PUT 用于完全替换资源, PATCH 用于部分更新资源。

实例代码

下面是基于 Node.js 和 Express 框架的实例代码,实现区分 PUT 和 PATCH 方法。

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

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

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

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

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

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

---------------- -- -- -
  ------------------- -- ------- -- ---- -------
---
展开代码

上面的代码演示了如何使用 PUT 和 PATCH 方法修改用户列表中的用户信息。PUT 方法用于完全替换用户信息,PATCH 方法用于部分更新用户信息。服务器将返回修改后的用户信息。如果用户不存在,则返回 404 状态码。

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

纠错
反馈

纠错反馈