如何在PHP API First App中处理PUT和DELETE HTTP请求?

时间:2013-04-18 23:56:56

标签: php api rest

我想在PHP中构建一个API第一个RESTful应用程序。我从未尝试过这样做,所以我对如何处理PUTDELETE

有疑问

例如,如果我有一个更新用户个人资料的API端点,我是否应该同时接受POSTPUT请求?

如果我正在为我的API构建客户端作为桌面应用程序或iOS应用程序等,那么向我的API发送PUT请求会很容易,但我计划为我的API提供基于Web的应用程序好。

因此,在我的基于网络的应用上,我会有一个用于更新用户个人资料的HTML表单,然后这将作为POST发送,因为HTML表单不允许PUT请求。

对此有更多经验的人能解释处理我的示例场景的最佳方法吗?

以正确的方式将我的表单作为POST发送到我的PHP脚本,然后我的PHP脚本会使用cURL向我的PHP API发出正确的PUT请求吗?

2 个答案:

答案 0 :(得分:2)

你绝对也可以从浏览器做PUT请求,但你需要javascript。

一般来说,我想说一个考虑它的好方法,如下:

首先构建一个遵循所有规则的优秀REST api。只有在您处于这一点时,才考虑使其在其他环境中工作所需的变通方法。提交HTML表单是一个需要解决方法的有效方法。

但是,由于'POST'完全打开以进行解释,并且几乎没有关联的规则,因此一种选择是在服务器上创建一个处理来自浏览器的所有POST请求的资源(或url)。 (像/browserpost)。

您始终可以添加隐藏的<input>字段name="url",指定实际要更新的资源,以及<input> name="method" value="PUT"的意图。< / p>

无论如何你需要添加CSRF保护,所以我觉得这将是解决这个问题的可靠方法。 1个端点专门“代理”基于html的表单提交,并在内部对正确的REST服务进行适当的映射。

答案 1 :(得分:0)

我会使用HTTP中描述的GET POST PUT DELETE。这是宁静的(在我看来)。由于常规浏览器表单不支持,我会通过AJAX发送数据。

如果您确实需要使用浏览器表单,可能是因为未启用javascript,那么使用POST请求和?method之类的参数听起来像是一个合适的解决方案 - 尽管我不喜欢它。