据我所知,您可以通过POST发送JSON数据,但PUT是否应该专门在URI中发送信息,或者您可以同时执行这两项操作吗?
谢谢!
答案 0 :(得分:14)
POST和PUT都可以用于不同情况下的创建和更新操作。那么PUT和POST究竟有什么区别呢? 简而言之:当且仅当您知道资源所在的URL以及资源的全部内容时才使用PUT。否则,请使用POST。
POST是一个令人难以置信的一般动词。因为它既不保证安全也不保证幂,并且它在RFC中具有相对宽松的描述,你可以将它用于几乎任何东西。实际上,您可以将所有请求发送到POST请求,因为POST几乎没有承诺;如果它想要,它可以表现得像GET,PUT或DELETE。它还可以做一些其他动词无法做到的事情 - 它可以在不同于HTTP请求中的URL的URL上创建新资源;并且它可以修改资源的一部分而不会改变整个事物(虽然提议但未被广泛接受的PATCH方法可以做类似的事情)。
PUT是一个限制性更强的动词。它需要一个完整的资源并将其存储在给定的URL中。如果之前有资源,则将其替换;如果没有,则创建一个新的。这些属性支持幂等性,天真的创建或更新操作可能不支持。我怀疑这可能是为什么PUT的定义方式;它是一种幂等操作,允许客户端向服务器发送信息。
参考文献:
答案 1 :(得分:2)
从HTTP的角度来看,请求格式是相同的。
答案 2 :(得分:1)
您可以以相同的方式发送请求正文,只需通过您的应用程序代码处理它......
POST
动词传统上用于创建资源
PUT
动词传统上用于更新资源
答案 3 :(得分:0)
PUT
在服务器上上传新资源。如果资源已经存在且不同,则将其替换;如果它不存在,则创建它。
POST
触发服务器上的操作。它有副作用,可用于触发订单,修改数据库,在论坛中发布消息或其他操作。