0

我想在 PHP 中构建一个 API 第一个 RESTful 应用程序。我从来没有尝试过这样做,所以我对如何处理PUT和处理有一些疑问DELETE

例如,如果我有一个更新用户配置文件的 API 端点,我是否应该让它同时接受 aPOSTPUT请求?

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

因此,在我的基于 Web 的应用程序上,我将有一个 HTML 表单来更新用户配置文件,然后将其POST作为 HTML 表单不允许PUT请求发送。

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

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

4

2 回答 2

2

您绝对也可以从浏览器执行 PUT 请求,但您需要 javascript。

一般来说,我会说一个很好的思考方式,如下:

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

然而,由于 'POST' 是完全开放的,并且几乎没有相关的规则,一个选择是在您的服务器上创建一个资源(或 url)来处理来自浏览器的所有 POST 请求。(类似/browserpost)。

您始终可以添加一个隐藏<input>字段,name="url"其中指定实际要更新的资源,以及用于意图的<input>with name="method" value="PUT"

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

于 2013-04-19T00:05:40.197 回答
0

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

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

于 2013-04-19T00:01:51.313 回答