在HTTP中,PUT和POST发送数据是否不同?

发布于 2024-12-21 08:33:55 字数 81 浏览 4 评论 0原文

据我所知,您可以通过 POST 发送 JSON 数据,但 PUT 应该专门发送 URI 中的信息还是可以同时执行这两种操作?

谢谢!

From what I know you can send JSON data via POST, but should PUT be specifically sending information in the URI or can you do both?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

不回头走下去 2024-12-28 08:33:55

POST 和 PUT 都可以用于不同情况下的创建和更新操作。那么 PUT 和 POST 到底有什么区别呢?
简而言之:当且仅当您知道资源所在的 URL 以及资源的全部内容时才使用 PUT。否则,请使用 POST。

POST 是一个非常通用的动词。因为它既不保证安全性,也不保证幂等性,而且 RFC 中的描述相对宽松,所以您几乎可以将它用于任何用途。事实上,您可以发出所有请求 POST 请求,因为 POST 做出的承诺很少;如果愿意,它的行为可以类似于 GET、PUT 或 DELETE。它还可以做一些其他动词无法做的事情 - 它可以在与 HTTP 请求中的 URL 不同的 URL 处创建新资源;它可以修改部分资源而不改变整个资源(尽管提出的但未被广泛接受的 PATCH 方法可以做类似的事情)。

PUT 是一个限制性更强的动词。它需要一个完整的资源并将其存储在给定的 URL 处。如果以前有资源,则将其替换;如果没有,则创建一个新的。这些属性支持幂等性,而简单的创建或更新操作可能不支持幂等性。我怀疑这可能就是 PUT 如此定义的原因;这是一种幂等操作,允许客户端向服务器发送信息。

参考文献:

  • RFC 2616 - HTTP 1.1
  • RFC 5789 - HTTP 的 PATCH 方法
  • Martin Fowler,Richardson 成熟度模型

Both POST and PUT can be used for create and update operations in different situations. So what exactly is the difference between PUT and POST?
In a nutshell: use PUT if and only if you know both the URL where the resource will live, and the entirety of the contents of the resource. Otherwise, use POST.

POST is an incredibly general verb. Because it promises neither safety nor idempotence, and it has a relatively loosely-worded description in the RFC, you can use it for pretty much anything. In fact, you could make all of your requests POST requests because POST makes very few promises; it can behave like a GET, a PUT, or a DELETE if it wants to. It also can do some things that no other verb can do - it can create a new resource at a URL different from the URL in the HTTP request; and it can modify part of a resource without changing the whole thing (although the proposed but not widely-accepted PATCH method can do something similar).

PUT is a much more restrictive verb. It takes a complete resource and stores it at the given URL. If there was a resource there previously, it is replaced; if not, a new one is created. These properties support idempotence, which a naive create or update operation might not. I suspect this may be why PUT is defined the way it is; it's an idempotent operation which allows the client to send information to the server.

References:

  • RFC 2616 - HTTP 1.1
  • RFC 5789 - PATCH method for HTTP
  • Martin Fowler, the Richardson Maturity Model
久隐师 2024-12-28 08:33:55

从HTTP的角度来看,请求格式是相同的。

From HTTP's point of view, the request format is the same.

べ映画 2024-12-28 08:33:55

您可以以相同的方式发送请求正文,只是应用程序代码的处理方式不同...

POST 动词传统上用于创建资源

PUT 动词传统上用于更新资源

You can send the request body the same way, it is just handled differently by your application code...

The POST verb is traditionally used to create a resource

The PUT verb is traditionally used to update a resource

記憶穿過時間隧道 2024-12-28 08:33:55

PUT 在服务器上上传新资源。如果资源已经存在并且不同,则将其替换;如果它不存在,则创建它。

POST 触发服务器上的操作。它有副作用,可用于触发订单、修改数据库、在论坛中发布消息或其他操作。

PUT uploads a new resource on the server. If the resource already exists and is different, it is replaced; if it doesn't exist, it is created.

POST triggers an action on the server. It has side-effects and can be used to trigger an order, modify a database, post a message in a forum, or other actions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文