我将开始使用一个名为Slim的 PHP REST 框架工作,并且有一些关于 PUT 和 DELETE 的文档,所以我想知道如果我可以使用 GET 或 POST 删除数据库上的记录,我是否应该打扰它。
有什么优势吗?
99% 的约定,但有用的约定。知道什么样的请求进来并且使 API 使用更容易是很方便的(而不是强迫开发人员记住 add action=blah
,你可以告诉他们“无论何时你想删除一些东西 - 相同的请求,DELETE
动词)。
剩下的 1% 来自一个简单的事实: using避免了必须在或变量DELETE
中放入额外的参数来表示删除。这是通过选择可修改的字段而不是添加额外字段而不必重复自己而节省的字节。当您可以不这样做时增加复杂性是没有意义的。GET
POST
需要注意的事情还包括:动词的幂等性。然而,这是一个约定——GET
应该是幂等的,因为它很容易通过浏览器请求触发。它应该是“安全的重复”。
(最后一点有用:大多数 MVC 框架通过 HTTP 动词拆分端点。为您节省了 if!)
使用 POST 进行 DELETE 几乎没有什么坏处,除了对开发人员来说不太明显,中间人看不到您正在删除某些内容。
然而,使用 GET 进行 DELETE 将是一个非常糟糕的主意。HTTP 规范说 GET 操作必须是安全的,而删除某些内容是不安全的。为什么不应该使用 GET 进行删除有很多实际原因,稍微谷歌搜索一下就可以找到大量相关信息。
当 PUT 的“完全替换”语义适合您的场景时,请使用它。否则,请不要打扰恕我直言。
它用作将请求映射到操作的一种方式,将请求的类型拆分为元信息(即GET
)和实际数据作为在查询/正文中传递的内容(反对发送另一个查询字符串参数来说明操作, 喜欢action=delete
或/delete/
在 uri 中的某处。
您选择了一个使用 REST“规则”的 REST 框架。
阅读有关 REST 的更多信息 - https://en.wikipedia.org/wiki/Representational_state_transfer