小编典典

POST 和 PUT HTTP 请求有什么区别?

all

它们似乎都在向体内的服务器发送数据,那么它们有何不同呢?


阅读 133

收藏
2022-02-28

共1个答案

小编典典

HTTP 放置:

PUT 将文件或资源放在特定的 URI 上,并且准确地放在该 URI 上。如果该 URI 中已有文件或资源,则 PUT
会替换该文件或资源。如果那里没有文件或资源,则 PUT 创建一个。PUT
幂等的,但矛盾的是
PUT 响应是不可缓存的。

PUT 的 HTTP 1.1 RFC
位置

HTTP 发布:

POST 将数据发送到特定的 URI,并期望该 URI 上的资源来处理请求。此时,Web 服务器可以确定如何处理指定资源上下文中的数据。POST
方法不是幂等的,但是只要服务器设置适当的
Cache-Control 和 Expires 标头,POST 响应 是可缓存的。

官方 HTTP RFC 指定 POST 为:

  • 现有资源的注释;
  • 将消息发布到公告板、新闻组、邮件列表或类似的文章组;
  • 向数据处理过程提供数据块,例如提交表单的结果;
  • 通过追加操作扩展数据库。

POST 的 HTTP 1.1 RFC
位置

POST 和 PUT 的区别:

RFC 本身解释了核心区别:

POST 和 PUT 请求的根本区别体现在 Request-URI 的不同含义上。POST 请求中的 URI
标识将处理封闭实体的资源。该资源可能是一个数据接受进程,一个通往其他协议的网关,或者一个接受注释的单独实体。相反,PUT 请求中的 URI
标识了请求中包含的实体——用户代理知道 URI 的意图,服务器不得尝试将请求应用于其他资源。如果服务器希望将请求应用于不同的 URI,它必须发送
301(永久移动)响应;然后用户代理可以自己决定是否重定向请求。

此外,更简洁一点的是,RFC 7231 第 4.3.4 节 PUT状态(强调添加),

4.3.4. 放

PUT 方法请求目标资源的状态是 createdreplaced具有由请求消息有效负载中包含的表示定义的状态。

使用正确的方法,不相关的:

REST ROA与 SOAP
相比的一个好处是,在使用 HTTP REST ROA 时,它鼓励正确使用 HTTP 动词/方法。因此,例如,当您想在该确切位置创建资源时,您只会使用
PUT。而且您永远不会使用 GET 来创建或修改资源。

2022-02-28