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

时间:2013-05-21 16:31:57

标签: php json http rest

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

有什么好处吗?

3 个答案:

答案 0 :(得分:3)

99%的惯例,但有用的约定。知道什么样的请求进入并使API使用更容易(而不是强迫开发人员记住添加action=blah,你可以告诉他们“无论什么时候你想删除某些东西 - 同样的请求,{{ 1}}动词)。

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

需要注意的事项还包括:动词的幂等性。这是一个惯例,但是POST应该是幂等的,因为它很容易通过浏览器请求触发。应该“安全重复”。

(最后有用的一点:大多数MVC框架通过HTTP动词分割端点。保存你的if!)

答案 1 :(得分:2)

使用POST进行DELETE几乎没有什么害处,除了它对开发人员不那么明显,中间人无法看到你删除了什么。

然而,对于DELETE使用GET将是一个可怕的坏主意。 HTTP规范说GET操作必须是安全的,删除某些东西是不安全的。有许多实际的原因,你不应该使用GET删除,有点谷歌搜索应该找到大量的信息。

当“完全替换”语义适合您的场景时使用PUT。否则,不要打扰恕我直言。

答案 2 :(得分:0)

它用作将请求映射到操作的方式,将请求的类型拆分为元信息(即GET),将实际数据拆分为在查询/正文中传递的内容(与发送方式相反)另一个查询字符串参数,用于说明操作,例如uri中某处的action=delete/delete/

您选择了一个使用REST“规则”的REST框架 阅读有关REST的更多信息 - https://en.wikipedia.org/wiki/Representational_state_transfer