在 MVC 2 发布后,我已经开始检查和使用新功能,但我不明白什么是PUT
和DELETE
动词的用途。
我已经搜索过它并阅读了一些文章,但我无法得到它。
DELETE
和的主要目的是PUT
什么?GET
与使用or方法相比,它们是否有任何优势POST
(即使我可以使用 GET 和 POST 处理所有请求)?
在 MVC 2 发布后,我已经开始检查和使用新功能,但我不明白什么是PUT
和DELETE
动词的用途。
我已经搜索过它并阅读了一些文章,但我无法得到它。
DELETE
和的主要目的是PUT
什么?GET
与使用or方法相比,它们是否有任何优势POST
(即使我可以使用 GET 和 POST 处理所有请求)?
GET:唯一的功能是将信息发送回客户端。它应该是一个没有副作用的可重复操作。
POST:它执行有副作用的操作。它是不可重复的(如果您 POST 两次,服务器会执行两次)。操作后它应该重定向到另一个页面以使用 GET 显示结果。
DELETE:它唯一的作用是做一个破坏性的操作,不可重复(一旦对象被删除,就没有别的东西可以删除了)。
PUT:它的功能是修改单个对象并使用以 POST(类似)方式发送的值更新它。可重复。
您可以使用 POST伪造DELETE 和 PUT(因为某些 Web 浏览器无法识别 DELETE 和 PUT)。
请仅使用 GET 来显示信息,不要用于有副作用的操作。
在 RESTful 架构中,DELETE
应该用于将删除数据的请求,并且PUT
应该用于将插入数据的请求。
基本上它用于更好地区分动作/特权。
方法 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
首先,您应该查看BlaM对这个(欺骗?)问题的非常好的回答。
显然,您可以在不使用 REST 原则的情况下从技术上创建/更新/删除资源,但您错过了一点。如果您仍然没有真正了解 REST 背后的概念,那么 Ryan Tomayko 的博客文章是一个不错的起点。
最初的目的是使用这些动词编辑网页(更多关于 RESTful 系统)。此后,它们已被WebDAV扩展弃用。在实践中,从不使用 PUT 和 DELETE(或者很少使用自定义构建的应用程序)。