我想在PHP中构建一个API第一个RESTful应用程序。我从未尝试过这样做,所以我对如何处理PUT
和DELETE
例如,如果我有一个更新用户个人资料的API端点,我是否应该同时接受POST
和PUT
请求?
如果我正在为我的API构建客户端作为桌面应用程序或iOS应用程序等,那么向我的API发送PUT
请求会很容易,但我计划为我的API提供基于Web的应用程序好。
因此,在我的基于网络的应用上,我会有一个用于更新用户个人资料的HTML表单,然后这将作为POST
发送,因为HTML表单不允许PUT
请求。
对此有更多经验的人能解释处理我的示例场景的最佳方法吗?
以正确的方式将我的表单作为POST
发送到我的PHP脚本,然后我的PHP脚本会使用cURL向我的PHP API发出正确的PUT
请求吗?
答案 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
之类的参数听起来像是一个合适的解决方案 - 尽管我不喜欢它。