PUT 与 POST – 它们之间的区别
PUT 和 POST 之间的主要区别
- 当您必须修改单个资源时,会调用 PUT 方法,而当您必须添加子资源时,会调用 POST 方法。
- POST 方法响应可以被缓存,但不能缓存 PUT 方法响应。
- 您可以在 PUT 中使用 UPDATE 查询,而可以在 POST 中使用创建查询。
- 在PUT方法中,客户端决定资源应该具有哪个URI,而在POST方法中,服务器决定资源应该具有哪个URI。
- 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 的步骤:
步骤1) 使用 PUT 请求更新资源。
步骤2) 对资源使用 GET 方法。如果 PUT 请求成功,您将收到新数据。如果请求中提供的数据无效,此方法将失败。因此,它不会更新任何内容。
使用 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 数据。