PUT 与 POST – 它们之间的区别

PUT 和 POST 之间的主要区别

  • 当您必须修改单个资源时,会调用 PUT 方法,而当您必须添加子资源时,会调用 POST 方法。
  • POST 方法响应可以被缓存,但不能缓存 PUT 方法响应。
  • 您可以在 PUT 中使用 UPDATE 查询,而可以在 POST 中使用创建查询。
  • 在PUT方法中,客户端决定资源应该具有哪个URI,而在POST方法中,服务器决定资源应该具有哪个URI。
  • PUT 起具体作用,而 POST 起抽象作用。
  • 如果多次发送相同的 PUT 请求,结果将保持不变,但如果多次发送相同的 POST 请求,您将收到不同的结果。
  • PUT 方法是幂等的,而 POST 方法不是幂等的。
PUT 与 POST
PUT 与 POST

什么是 PUT 方法?

PUT 方法用于更新服务器上可用的资源。通常,它会将目标 URL 上现有的内容替换为其他内容。您可以使用它来创建新资源或覆盖现有资源。PUT 要求封闭的实体必须存储在提供的请求 URI(统一资源标识符)下。

什么是 POST 方法?

POST 是 HTTP 支持的方法,

表示 Web 服务器接受请求的消息正文中包含的数据。万维网通常使用 POST 将用户生成的数据发送到 Web 服务器或上传文件。

REST API 中 PUT 和 POST 之间的差异

以下是 PUT 和 POST 方法之间的重要区别:

PUT 解决方案&帖子
此方法是幂等的。 此方法不是幂等的。
当您必须修改已经是资源集合的一部分的单个资源时,会调用 PUT 方法。 当您必须在资源集合下添加子资源时,将调用 POST 方法。
RFC-2616 描述了 PUT 方法发送一个对存储在所提供的请求 URI 中的封闭实体的请求。 此方法请求服务器接受请求中包含的实体。
PUT 方法语法是 PUT /questions/{questions-id} POST 方法语法是 POST /questions
您不能缓存 PUT 方法响应。 POST 方法答案可以被缓存。
PUT /vi/juice/orders/1234 表示您正在更新由“1234”标识的资源。 POST /vi/juice/orders 表示您正在创建一个新资源并返回一个标识符来描述该资源。
如果多次发送相同的请求,结果将保持不变。 如果您多次发送相同的 POST 请求,您将收到不同的结果。
PUT 的工作方式具体如下。 POST 工作作为摘要。
我们在 PUT 中使用 UPDATE 查询。 我们在 POST 中使用创建查询。
在PUT方法中,客户端决定资源应该具有哪个URI。 在 POST 方法中,服务器决定资源应该具有哪个 URI。

PUT 示例

以下是 PUT 方法的 Web 服务器示例:

HTTP 放置 http://www.google.com/users/234

HTTP 放入 http://www.google.com/users/234/accounts/567

请求

PUT /new.html HTTP/1.1
Host: example.com
Content-type: text/html
Content-length: 20

<p>New File</p>

回复

如果目标资源具有当前表示,并且已修改为所附表示的状态,则服务器应发送两个响应。第一个响应代码为 200(OK),第二个响应代码为 204(无内容)。

如果目标资源没有任何表示,那么服务器应该通过发送 201 代码(已创建)响应通知用户。

 HTTP/1.1 201 Created
Content-Location: /new.html

POST 示例

以下是 POST 方法的示例:

HTTP POST http://www.google.com/users

HTTP 发布 http://www.google.com/users/234/accounts

使用默认 application/x-www-form-urlencoded 内容类型的表单:

POST /test HTTP/1.1
Host: abc.example
Content-Type: application/x-www-form-urlencoded
Content-Length: 40

field1=value1&field2=value2

使用 PUT 请求测试 API

以下是使用 PUT 请求测试 API 的步骤:

使用 PUT 请求测试 API
使用 PUT 请求测试 API

步骤1) 使用 PUT 请求更新资源。

步骤2) 对资源使用 GET 方法。如果 PUT 请求成功,您将收到新数据。如果请求中提供的数据无效,此方法将失败。因此,它不会更新任何内容。

使用 POST 请求测试 API

以下是使用 POST 请求测试 API 的步骤:

使用 POST 请求测试 API

使用 POST 请求测试 API

步骤1) 使用 POST 请求创建资源并确保它返回 200 状态代码。

步骤2) 对该资源发出 GET 请求并以正确的格式保存数据。

步骤3) 您必须添加测试以确保 POST 请求因数据不正确而失败。

PUT 方法的优点

以下是使用 PUT 方法的优点/好处:

  • 它可以帮助您将提供的实体存储在提供的 URI 下
  • 如果提供的实体已经存在,那么您可以执行更新操作,或者可以使用该 URI 创建。
  • 您可以根据需要多次创建资源。
  • 使用 PUT 方法创建资源非常容易。
  • 您不需要检查用户是否多次点击了提交按钮。
  • 它可以识别请求中所包含的实体。

POST 方法的优点

以下是使用 POST 方法的优点/好处:

  • 此方法帮助您确定资源URI。
  • 使用位置标头指定新的资源位置标头非常容易。
  • 您可以发送请求来接受该实体作为资源的新下属,该资源由 URI 标识。
  • 您可以将用户生成的数据发送到网络服务器。
  • 当您不知道要保存任何资源的 URL 时,它非常有用。
  • 当您需要服务器时使用 POST,它控制资源的 URL 生成。
  • POST 是一种安全的方法,因为它的请求不会保留在浏览器历史记录中。
  • 您可以使用邮件轻松传输大量数据。
  • 您可以将数据保持私密。
  • 此方法可用于发送二进制和 ASCII 数据。