为什么我需要PUT或DELETE Http Verbs?

时间:2010-03-22 15:40:56

标签: asp.net asp.net-mvc-2 httpverbs

MVC 2发布后,我开始检查并使用新功能,但我无法理解PUTDELETE动词的用法。

我搜索了它并阅读了一些文章,但我无法得到它。

DELETEPUT的主要目的是什么?它们是否比使用GETPOST方法更有优势(即使我可以使用GET和POST处理所有请求)?

5 个答案:

答案 0 :(得分:13)

  • GET:唯一的功能是将信息发送回客户端。它应该是repeatable操作,没有副作用。

  • POST:它执行副作用操作。它是not repeatable(如果您POST两次,服务器会执行两次)。操作后,它应该重定向到另一个页面,以使用GET显示结果。

  • DELETE:它唯一的功能是进行破坏性操作,不可重复(一旦删除了对象,就没有别的东西可以删除)。

  • PUT:它的功能是修改单个对象并使用POST(类似)方式发送的值更新它。重复的。

您可以使用POST 伪造 DELETE和PUT(因为某些网络浏览器无法识别DELETE和PUT)。

请使用GET仅显示信息not for operations with side effects

答案 1 :(得分:4)

在RESTful架构中,DELETE应该用于删除数据的请求,PUT应该用于插入数据的请求。

答案 2 :(得分:2)

基本上它用于更好地区分动作/特权。

幂等方法和Web应用程序

  

方法PUT和DELETE定义为   是幂等的,意思是多重的   相同的要求应该有   与单个请求相同的效果。   方法GET,HEAD,OPTIONS和TRACE,   如果安全,也应该   是幂等的,因为HTTP是无国籍的   协议。相比之下,POST方法   不一定是幂等的   因此发送相同的POST   请求可以进一步多次   影响国家或导致进一步的一面   影响(如财务   交易)。在某些情况下,这可能   是可取的,但在其他情况下这是   可能是由于一次事故,如   当用户没有意识到这一点时   他们的行动将导致发送   另一个请求,或者他们没有   收到他们的充分反馈   第一次请求成功。而   Web浏览器可能会显示警报对话框   在某些情况下警告用户的方框   重新加载页面的地方可能会重新提交   POST请求,一般都是   用于处理案例的Web应用程序   POST请求不应该在哪里   提交不止一次。注意   方法是否是幂等的不是   由协议或网络强制执行   服务器。完全有可能   编写一个Web应用程序(for   例如)数据库插入或其他   非幂等行动是由   GET或其他请求。忽略这个   但是,建议可能导致   如果用户不良后果   代理人假设重复相同   如果请求不安全,请求是安全的。

通过维基百科
http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods

答案 3 :(得分:0)

首先,你应该查看BlaM's very good answer到这个(欺骗?)的问题。

显然,你可以技术上创建/更新/删除资源而不使用REST原则,但是你错过了一点。如果你还没有真正掌握REST背后的概念,Ryan Tomayko's blog entry是一个不错的起点。

答案 4 :(得分:-3)

最初的目的是使用这些动词(more on the RESTful system)编辑网页。自WebDAV扩展名以来,它们已被弃用。实际上,从不使用PUT和DELETE(或者很少使用自定义构建的应用程序)。