什么是PUT和DELETE HTTP请求方法的有效性?什么是PUT和DELETE HTTP请求方法的

2019-05-12 23:17发布

我读过关于这一点,但没能得到关于这一主题的结论了很多东西。

但我从来没有使用PUT或DELETE HTTP请求的方法。 我的倾向是使用GET当系统(我的应用程序或网站)的统计可能不会受到影响(如产品上市),并使用POST时,它会受到影响(顺序放置)。 是不是足够的还是我失去了一些东西?

Answer 1:

删除的删除请求资源:

DELETE方法请求原始服务器删除由Request-URI标识的资源。 该方法可以通过在源服务器上的人为干预(或其它装置)所覆盖。 客户端不能保证操作已经进行,即使从源服务器返回的状态代码表示操作已成功完成...

PUT是把或更新服务器上的资源:

PUT方法要求将封闭实体所提供的请求URI下储存。 如果Request-URI是指已经存在的资源,封闭的实体应该被视为驻留在源服务器上的一个修改后的版本。 如果Request-URI没有指向已存在的资源,而URI是能够被定义为请求的用户代理一个新的资源,原始服务器可以创建与URI资源...

对于完整的规范,请访问:

  • http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

由于目前的浏览器遗憾的是不支持任何其他动词比POST和HTML表单的GET ,你通常不能将它与他们充分的程度(你仍然可以劫持通过JavaScript虽然他们提交)利用HTTP。 没有用于在HTML表单这些方法支持导致含有URI的动词,例如像

POST http://example.com/order/1/delete

或者更糟

POST http://example.com/deleteOrder/id/1

通过HTTP隧道有效CRUD语义。 但是动词从来没有打算要URI的一部分。 代替HTTP已经提供了机制和语义通过HTTP方法CRUD资源(例如,顺序)。 HTTP是一个协议,而不仅仅是一些数据隧道服务。

因此,要删除在Web服务器上的资源时,你会打电话

DELETE http://example.com/order/1

并更新它,你会打电话

PUT http://example.com/order/1

并提供在PUT体更新的资源表示服务器无法再申请。

所以,如果你正在构建某种客户端的REST API ,你很可能会使其发送PUT和DELETE请求。 这可能是在浏览器中内置客户端,例如,通过JavaScript发送请求,或者它可能是一个服务器,等上运行的一些工具

对于一些更多详情,请访问:

  • http://martinfowler.com/articles/richardsonMaturityModel.html
  • 是PUT,DELETE,HEAD等方法在大多数网页浏览器可用?
  • 为什么没有PUT和DELETE在HTML表单方法
  • 如果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


Answer 2:

使用HTTP请求的动词,如GET,POST,DELETE,PUT等等...让您构建RESTful Web应用程序。 阅读在这里: http://en.wikipedia.org/wiki/Representational_state_transfer

看到从这个利益最简单的方法就是看看下面这个例子。 每一个MVC框架有一个Router/Dispatcher该URL-S映射到actionControllers。 所以像这样的URL: /blog/article/1将调用blogController::articleAction($id); 现在,这个路由器是只知道URL或/blog/article/1/

但是,如果路由器会知道整个HTTP请求对象,而不是只是URL的,他能有机会HTTP请求动词(GET,POST,PUT,DELETE ...),以及其它许多有用的东西有关当前HTTP请求。

这将使您可以配置应用程序,以便它可以接受相同的URL,并将其映射到取决于HTTP请求的动词不同actionControllers。

例如:

如果你想以检索第1条,你可以这样做:

GET /blog/article/1 HTTP/1.1

但是,如果要删除第1条,你会做到这一点:

DELETE /blog/article/1 HTTP/1.1

请注意,两个HTTP请求具有相同的URI,/博客/条/ 1,唯一不同的是HTTP请求动词。 并基于该动词路由器可以调用不同的ActionController。 这使您能够构建整洁的URL-S。

阅读两篇文章,它们可以帮助你:

Symfony的2 - HTTP基础

Symfony的2 -路由

这些文章是关于Symfony的2框架,但他们可以帮助你找出如何做HTTP请求和响应工作。

希望这可以帮助!



文章来源: What is the usefulness of PUT and DELETE HTTP request methods?