我将开始使用一个名为Slim的PHP REST框架,并且有一些关于PUT和DELETE的文档,所以我想知道如果我可以用GET或POST删除数据库上的记录,我是否应该打扰它。
有什么优点吗?
99%的惯例,但有用的惯例。知道什么样的请求进来是很方便的,并且使API的使用更容易(而不是强迫开发人员记住添加action=blah
,你可以告诉他们"每当你想删除一些东西-相同的请求,DELETE
动词)。
剩下的1%是通过一个简单的事实:使用DELETE
避免了在GET
或POST
变量中放置额外的参数来表示删除。通过选择一个可修改的字段,而不是添加一个额外的字段,不必重复自己,从而节省了字节。如果不增加复杂性就可以做到,那么增加复杂性就没有意义了。
要注意的事情还包括:动词的幂等性。然而,这是一种惯例——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