PUT和DELETE HTTP请求方法的用处是什么?
我已经阅读了很多关于这方面的内容,但是无法得出关于这个主题的结论。
但我从来没有使用PUT或DELETE HTTP请求方法。 我的倾向是使用GET系统(我的应用程序或网站)的统计可能不会受到影响(如产品列表),并使用POST时受影响(订购放置)。 是不是够了还是我错过了什么?
DELETE用于删除请求资源:
DELETE方法请求源服务器删除由Request-URI标识的资源。 这种方法可能会被原始服务器上的人为干预(或其他方式)覆盖。 即使从源服务器返回的状态码指示操作已成功完成,客户端也不能保证已执行操作。
PUT用于放置或更新服务器上的资源:
PUT方法要求封闭的实体存储在提供的Request-URI下。 如果Request-URI引用一个已经存在的资源,封闭的实体应该被认为是驻留在原始服务器上的修改版本。 如果Request-URI不指向现有资源,并且该URI能够被请求用户代理定义为新资源,则源服务器可以使用该URI创build资源…
完整的规范访问:
由于目前的浏览器很不幸地不支持比HTML和POSTforms的其他任何动词 ,所以你通常无法使用HTTP(尽pipe你仍然可以通过JavaScript劫持他们的提交)。 在HTML表单中缺less对这些方法的支持导致了包含动词的URI,例如
POST http://example.com/order/1/delete
甚至更糟
POST http://example.com/deleteOrder/id/1
通过HTTP有效地挖掘CRUD语义。 但动词从来都不是URI的一部分。 相反,HTTP已经通过HTTP方法提供了CRUD资源(例如命令)的机制和语义。 HTTP是一种协议,而不仅仅是一些数据隧道服务。
所以要删除networking服务器上的资源,你可以打电话
DELETE http://example.com/order/1
并更新它,你会打电话
PUT http://example.com/order/1
然后在PUT主体中提供更新后的资源表示,以供networking服务器应用。
因此,如果您正在为REST API构build某种客户端,则可能会使其发送PUT和DELETE请求。 这可能是一个在浏览器内部build立的客户端,例如通过JavaScript发送请求,或者可能是在服务器上运行的一些工具等。
有关更多详情,请访问:
- http://martinfowler.com/articles/richardsonMaturityModel.html
- PUT,DELETE,HEAD等方法在大多数Web浏览器中都可用?
- 为什么在HTML表单中没有PUT和DELETE方法?
- PUT和DELETE应该用于表单吗?
- http://amundsen.com/examples/put-delete-forms/
- http://www.quora.com/HTTP/Why-are-PUT-and-DELETE-no-longer-supported-in-HTML5-forms
使用HTTP请求谓词,如GET,POST,DELETE,PUT等…使您能够构buildRESTful Web应用程序。 在这里阅读: http : //en.wikipedia.org/wiki/Representational_state_transfer
从这个angular度看最好的方法就是看这个例子。 每个MVC框架都有一个将URL-s映射到actionControllers的Router/Dispatcher
。 所以像这样的URL: /blog/article/1
会调用blogController::articleAction($id);
现在这个路由器只知道URL或/blog/article/1/
但是,如果该路由器知道整个HTTP请求对象而不仅仅是URL,他可以访问HTTP请求动词(GET,POST,PUT,DELETE …)以及许多其他有用的关于当前HTTP请求的东西。
这将使您能够configuration应用程序,以便它可以接受相同的URL并根据HTTP请求动词将其映射到不同的actionControllers。
例如:
如果你想检索第1条,你可以这样做:
GET /blog/article/1 HTTP/1.1
但是如果你想删除文章1,你会这样做:
DELETE /blog/article/1 HTTP/1.1
请注意,两个HTTP请求都具有相同的URI / blog / article / 1,唯一的区别是HTTP请求动词。 基于这个动词你的路由器可以调用不同的actionController。 这使您能够构build整洁的URL。
阅读这两篇文章,他们可能会帮助你:
Symfony 2 – HTTP基础
Symfony 2 – 路由
这些文章是关于Symfony 2框架的,但是它们可以帮助你弄清楚HTTP Requests和Responses是如何工作的。
希望这可以帮助!