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