【发布时间】:2010-10-02 12:20:47
【问题描述】:
大多数 Web 服务器和框架默认支持 GET 和 POST HTTP 方法,并且不提倡甚至禁止使用 PUT 和 DELETE 方法。我知道使用后者是站点的conceptually more appropriate and e.g. minimizes the URL scheme,但实际上是否涉及任何性能优势(例如更少的请求,更少的处理)?如果是,那么用一个例子进行简要说明对我来说是完美的。
【问题讨论】:
大多数 Web 服务器和框架默认支持 GET 和 POST HTTP 方法,并且不提倡甚至禁止使用 PUT 和 DELETE 方法。我知道使用后者是站点的conceptually more appropriate and e.g. minimizes the URL scheme,但实际上是否涉及任何性能优势(例如更少的请求,更少的处理)?如果是,那么用一个例子进行简要说明对我来说是完美的。
【问题讨论】:
使用 PUT 和 DELETE 而不是 POST 确实没有性能优势。此外,不必使用 PUT 和 DELETE 来实现 RESTful。建议但不是必需的。见this。
【讨论】:
区分什么是框架和什么是 REST 系统很重要。也就是说,使用 Web 框架不一定会使系统成为 RESTful 系统。
也就是说,重要的不是你使用什么,而是你如何使用它。 因此,PUT 和 DELETE 不需要是 RESTFul,但它们确实代表了一个有趣的决定。
请看,当客户端执行 DELETE 时,它必须知道正在删除什么资源。它正在删除全部资源。例如,如果您有一个账单(标题加上详细信息行),并且您想将完整的账单表示为一个大资源,则 DELETE 将不起作用。您实际上可以使用 POST 修改账单。如果你已经有一个名为 detail line 的资源,并且你想删除它,那么当资源有 DELETE 命令时使用 POST 可能会违反协议的约束。
如果您永远不会删除任何内容,因为客户端无法控制资源的创建和删除,例如,不使用 DELETE 是很自然的。
【讨论】: