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

Dex*_*url 7 api post http put

据我所知,你可以通过POST发送JSON数据,但PUT是否应该专门在URI中发送信息,或者你可以同时执行这两项操作吗?

谢谢!

kvc*_*kvc 14

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

  • 以下是您所讲内容的一个很好的扩展:[PUT或POST其余故事](http://jcalcote.wordpress.com/2008/10/16/put-or-post-the-rest-故事/)。 (2认同)