Rest API中PUT与PATCH的区别及使用场景

作者:API传播员 · 2025-10-30 · 阅读时间:6分钟

在这篇文章中,我们将深入探讨 RESTful API 的概念。


什么是 HTTP?

HTTP(超文本传输协议)是一组用于在客户端和服务器之间通过互联网编码和传输信息的规则。当用户在浏览器中访问某个网站时,浏览器会向该网站所在的服务器发送 HTTP 请求,服务器则返回包含网站内容(如文本、图像和视频)的 HTTP 响应。HTTP 的作用是以客户端和服务器都能理解的方式组织这些请求和响应。


HTTP 方法概述

HTTP 定义了多种方法,用于向服务器请求或发送信息,这些方法通常被称为 HTTP 动词或 HTTP 方法。以下是五种主要的 HTTP 方法:

  • GET:用于从服务器获取资源。
  • POST:用于向服务器发送数据。
  • PUT:用于更新资源(通常是完整更新)。
  • PATCH:用于部分更新资源。
  • DELETE:用于删除资源。

什么是 REST API?

Web 开发中,HTTP 是 RESTful API 的基础。RESTful API 是一种允许不同软件系统之间进行通信的架构风格。它利用 HTTP 方法(如 GET、POST、PUT、PATCH 和 DELETE)来定义对资源的操作。


PUT 和 PATCH 的区别

PUT 和 PATCH 是两种常用于更新服务器资源的 HTTP 方法,但它们的更新方式有所不同。

PUT 方法

PUT 用于完全替换现有资源。当使用 PUT 请求更新资源时,服务器会用新资源完全替换现有资源。

例如,假设有一个用户配置文件,包含以下字段:

  • 姓名(name)
  • 邮箱(email)
  • 密码(password)

如果使用 PUT 方法更新配置文件,则必须同时提供所有字段的更新值,即使某些字段的值没有变化。

PATCH 方法

PATCH 用于部分更新资源。当使用 PATCH 请求更新资源时,服务器只会更新指定的字段,而其他字段保持不变。

例如,如果只需要更新用户配置文件中的邮箱字段,则只需发送该字段的新值,服务器会应用更改而不影响其他字段。

以下是 PUT 和 PATCH 的主要区别:

特性 PUT PATCH
更新范围 完整更新资源 部分更新资源
数据要求 必须提供资源的所有字段 仅需提供需要更新的字段
使用场景 资源的整体替换 资源的局部修改

何时使用 PUT 和 PATCH?

一般来说:

  • 如果需要完全更新一个资源,应使用 PUT
  • 如果只需要更新资源的一部分,应使用 PATCH

为了更好地理解,我们通过一个实际例子来说明这两种方法的使用。


示例:使用 JSONPlaceholder 和 Postman 测试

在以下示例中,我们将使用以下工具:

  • JSONPlaceholder:一个用于测试和原型设计的虚拟 REST API。
  • Postman:一个用于测试 API 的平台。

假设我们有一个名为 todo 的资源,包含以下字段:

  • userId
  • id
  • title
  • completed

使用 PATCH 方法

假设我们想将 id 为 1 的 todo 资源的 completed 字段从 false 更新为 true。由于只需要更新一个字段,因此我们选择使用 PATCH 方法。

在 Postman 中,按照以下步骤操作:

  1. 选择 PATCH 方法。

  2. 输入 API 端点:https://jsonplaceholder.typicode.com/todos/1

  3. 选择 Body 选项卡。

  4. 选择 raw 格式。

  5. 从下拉菜单中选择 JSON

  6. 在请求体中输入以下 JSON 对象:

    {
       "completed": true
    }
  7. 点击 发送 按钮。

发送请求后,服务器会返回完整的资源,其中 completed 字段的值已从 false 更新为 true,并返回 HTTP 状态200,表示更新成功。


使用 PUT 方法

假设我们想用新的数据完全替换 id 为 1 的 todo 资源。在这种情况下,我们需要提供所有字段的值,因此选择使用 PUT 方法。

在 Postman 中,按照以下步骤操作:

  1. 选择 PUT 方法。

  2. 输入 API 端点:https://jsonplaceholder.typicode.com/todos/1

  3. 在请求体中输入以下 JSON 对象:

    {
       "id": 1,
       "userId": 1,
       "title": "学习Linux",
       "completed": true
    }
  4. 点击 发送 按钮。

服务器会返回更新后的资源,并返回 HTTP 状态码 200,表示更新成功。


注意事项

需要注意的是,JSONPlaceholder 是一个虚拟 REST API,因此对资源的更新不会实际持久化。它的行为仅模拟资源已被更新的效果。


总结

通过本文的介绍,我们了解了 PUT 和 PATCH 方法的核心区别及其使用场景:

  • PUT:用于完全替换资源。
  • PATCH:用于部分更新资源。

在实际开发中,根据需求选择合适的 HTTP 方法,可以更高效地管理资源的更新操作。

原文链接: https://kodekloud.com/blog/put-and-patch-in-rest-api/