6

在 MVC 2 发布后,我已经开始检查和使用新功能,但我不明白什么是PUTDELETE动词的用途。

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

DELETE和的主要目的是PUT什么?GET与使用or方法相比,它们是否有任何优势POST(即使我可以使用 GET 和 POST 处理所有请求)?

4

5 回答 5

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

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

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

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

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

请仅使用 GET 来显示信息,不要用于有副作用的操作

于 2010-03-22T15:54:25.433 回答
4

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

于 2010-03-22T15:43:34.417 回答
2

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

幂等方法和 Web 应用程序

方法 PUT 和 DELETE 被定义为幂等的,这意味着多个相同的请求应该与单个请求具有相同的效果。被规定为安全的方法 GET、HEAD、OPTIONS 和 TRACE 也应该是幂等的,因为 HTTP 是一种无状态协议。相比之下,POST 方法不一定是幂等的,因此多次发送相同的 POST 请求可能会进一步影响状态或导致进一步的副作用(例如金融交易)。在某些情况下,这可能是可取的,但在其他情况下,这可能是由于意外,例如当用户没有意识到他们的操作将导致发送另一个请求,或者他们没有收到足够的反馈表明他们的第一个请求是成功的。虽然 Web 浏览器可能会在某些情况下显示警告对话框以警告用户,在某些情况下重新加载页面可能会重新提交 POST 请求,但通常由 Web 应用程序来处理不应多次提交 POST 请求的情况。请注意,协议或 Web 服务器不强制执行方法是否具有幂等性。完全可以编写一个 Web 应用程序,其中(例如)数据库插入或其他非幂等操作由 GET 或其他请求触发。但是,如果用户代理认为重复相同的请求是安全的,而实际上并非如此,那么忽略此建议可能会导致不良后果。通常由 Web 应用程序来处理不应多次提交 POST 请求的情况。请注意,协议或 Web 服务器不强制执行方法是否具有幂等性。完全可以编写一个 Web 应用程序,其中(例如)数据库插入或其他非幂等操作由 GET 或其他请求触发。但是,如果用户代理认为重复相同的请求是安全的,而实际上并非如此,那么忽略此建议可能会导致不良后果。通常由 Web 应用程序来处理不应多次提交 POST 请求的情况。请注意,协议或 Web 服务器不强制执行方法是否具有幂等性。完全可以编写一个 Web 应用程序,其中(例如)数据库插入或其他非幂等操作由 GET 或其他请求触发。但是,如果用户代理认为重复相同的请求是安全的,而实际上并非如此,那么忽略此建议可能会导致不良后果。

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

于 2010-03-22T15:54:41.093 回答
0

首先,您应该查看BlaM对这个(欺骗?)问题的非常好的回答。

显然,您可以在不使用 REST 原则的情况下从技术上创建/更新/删除资源,但您错过了一点。如果您仍然没有真正了解 REST 背后的概念,那么 Ryan Tomayko 的博客文章是一个不错的起点。

于 2010-03-22T15:57:07.180 回答
-3

最初的目的是使用这些动词编辑网页(更多关于 RESTful 系统)。此后,它们已被WebDAV扩展弃用。在实践中,从不使用 PUT 和 DELETE(或者很少使用自定义构建的应用程序)。

于 2010-03-22T15:42:57.797 回答