在 RESTful API 中,PUT 和 PATCH 是两种用于修改资源的 HTTP 方法。它们在功能上类似,都可以用于更新资源,但是它们的行为有所不同。在设计 RESTful API 时,正确区分 PUT 和 PATCH 请求是非常重要的,本文将详细解释如何区分它们,并给出实际的代码示例。
PUT 方法
PUT 方法表示“替换”资源。它用于完全替换资源的全部内容。PUT 请求需要提供完整的资源表示,包括那些不需要更改的部分。如果客户端只提供了部分资源表示,服务器必须将缺失的部分视为删除操作。
例如,我们有一个用户资源:
{ "id": 1, "name": "Jack", "age": 25, "email": "jack@example.com" }
如果客户端想要修改用户的信息,可以使用 PUT 方法,将完整的用户信息提交到服务器:
-- -------------------- ---- ------- --- -------- -------- ------------- ---------------- - ----- -- ------- ------ ------ --- -------- ----------------- -展开代码
服务器将完全替换用户信息,并返回 200 状态码。
PATCH 方法
PATCH 方法表示“修改”资源。它用于部分更新资源内容。PATCH 请求只需要提供修改的部分资源表示,服务器将保存原始资源的其余部分不变。
例如,如果客户端只想修改用户的姓名和年龄,可以使用 PATCH 方法:
PATCH /users/1 HTTP/1.1 Content-Type: application/json { "name": "Tom", "age": 26 }
服务器只会修改提交的字段,并返回 200 状态码。
如果客户端想要删除用户的邮箱,可以将邮箱置为 null,使用 PATCH 方法:
PATCH /users/1 HTTP/1.1 Content-Type: application/json { "email": null }
服务器将只删除邮箱字段,并返回 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