【发布时间】:2011-12-14 17:05:19
【问题描述】:
据我所知,您可以通过 POST 发送 JSON 数据,但 PUT 应该专门在 URI 中发送信息,还是两者都可以?
谢谢!
【问题讨论】:
据我所知,您可以通过 POST 发送 JSON 数据,但 PUT 应该专门在 URI 中发送信息,还是两者都可以?
谢谢!
【问题讨论】:
POST 和 PUT 都可以用于不同情况下的创建和更新操作。那么 PUT 和 POST 到底有什么区别呢? 简而言之:当且仅当您知道资源所在的 URL 以及资源的全部内容时才使用 PUT。否则,请使用 POST。
POST 是一个非常笼统的动词。因为它既不保证安全也不保证幂等性,而且它在 RFC 中的描述相对宽松,因此您几乎可以将它用于任何事情。事实上,您可以将所有请求都发出 POST 请求,因为 POST 做出的承诺很少;如果它愿意,它可以表现得像 GET、PUT 或 DELETE。它还可以做一些其他动词无法做到的事情——它可以在不同于 HTTP 请求中的 URL 的 URL 上创建新资源;并且它可以修改资源的一部分而不改变整个事情(尽管提出但未被广泛接受的 PATCH 方法可以做类似的事情)。
PUT 是一个限制性更强的动词。它需要一个完整的资源并将其存储在给定的 URL 中。如果之前有资源,则将其替换;如果没有,则创建一个新的。这些属性支持幂等性,而天真的创建或更新操作可能不支持。我怀疑这可能就是为什么 PUT 是这样定义的;这是一个幂等操作,允许客户端向服务器发送信息。
参考资料:
【讨论】:
从HTTP的角度来看,请求格式是一样的。
【讨论】:
您可以以相同的方式发送请求正文,只是您的应用程序代码处理方式不同...
POST动词传统上用于创建资源
PUT动词传统上用于更新资源
【讨论】:
PUT 在服务器上上传新资源。如果资源已经存在并且不同,则替换它;如果它不存在,则创建它。
POST 触发服务器上的操作。它具有副作用,可用于触发订单、修改数据库、在论坛中发布消息或其他操作。
【讨论】: