当我可以使用POST或GET时,为什么要使用PUT和DELETE呢?


Why use PUT and DELETE when I can do it with POST or GET

我将开始使用一个名为Slim的PHP REST框架,并且有一些关于PUT和DELETE的文档,所以我想知道如果我可以用GET或POST删除数据库上的记录,我是否应该打扰它。

有什么优点吗?

99%的惯例,但有用的惯例。知道什么样的请求进来是很方便的,并且使API的使用更容易(而不是强迫开发人员记住添加action=blah,你可以告诉他们"每当你想删除一些东西-相同的请求,DELETE动词)。

剩下的1%是通过一个简单的事实:使用DELETE避免了在GETPOST变量中放置额外的参数来表示删除。通过选择一个可修改的字段,而不是添加一个额外的字段,不必重复自己,从而节省了字节。如果不增加复杂性就可以做到,那么增加复杂性就没有意义了。

要注意的事情还包括:动词的幂等性。然而,这是一种惯例——GET应该是幂等的,因为它很容易通过浏览器请求触发。应该是"safe to repeat"

(最后有用的一点:大多数MVC框架通过HTTP动词拆分端点。

使用POST来执行DELETE操作几乎没有什么害处,除了开发人员和中介无法明显看到您正在删除某些内容。

然而,对DELETE使用GET将是一个非常糟糕的主意。HTTP规范指出GET操作必须是安全的,删除某些内容是不安全的。不应该使用GET进行删除的实际原因有很多,在谷歌上搜索一下就会发现很多这方面的信息。

当它的"完全替换"语义适合您的场景时,使用PUT。否则,恕我冒昧。

它被用作将请求映射到操作的一种方式,将请求的类型划分为元信息(即GET)和实际数据作为在查询/正文中传递的内容(而不是发送另一个查询字符串参数来声明操作,如action=delete/delete/在uri中的某个地方。

您选择了一个REST框架,它使用REST"规则"。
阅读更多关于REST的信息- https://en.wikipedia.org/wiki/Representational_state_transfer