php - PHP REST API 如何接收 PUTted 数据?

标签 php api rest cakephp http-put

我正在编写 API 并希望遵循 REST 方法。据我了解,如果我想让 API 用户更新特定记录 PUT <a href="http://server/specific" rel="noreferrer noopener nofollow">http://server/specific</a>_resource应支持类型请求。当然,他们不是在做 GET他们需要传递新数据,我的问题是如何做到这一点(在我的特定情况下,只更新指定记录的某些字段,但这在这里并不那么相关)。我可以想到两种方法:将数据包含在请求正文中(使用 curl: curl -X PUT -d "key=value" <a href="http://server/specific" rel="noreferrer noopener nofollow">http://server/specific</a>_resource )或包含在查询字符串中(使用 curl: curl -X PUT <a href="http://server/specific" rel="noreferrer noopener nofollow">http://server/specific</a>_resource?key=value )。

不幸的是,无论我采用何种方法,似乎都很难获得所提供的数据。问题似乎是 PHP 只真正完全理解两种 HTTP 方法,GETPOST , 与 PUT considered to be for file uploads .如果我在正文中包含数据,那么访问它的唯一方法似乎是 via an fopen('php://input') call .例如, http_get_request_body() 不提供数据。同样,在 $_REQUEST 中找不到信息。超全局的。如果我不想用 fopen('php://input') 处理原始请求正文然后看来我必须将数据作为查询字符串参数发送,因为数据将显示为 $_GET 的元素。超全局(也是 $_REQUEST )。

我专门使用 CakePHP,它似乎只填充 form params 的数组我的 Controller 方法中的数组 if the request was a POST .查询字符串参数放在 params 中' url如果在请求 URL 中使用,则不管请求方法如何。毫不奇怪,我是 not the only one谁遇到过这个。

您建议的解决方案是什么?处理输入流?使用查询字符串参数?忘了 PUT动词和用法POST相反?

最佳答案

关于php - PHP REST API 如何接收 PUTted 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3860149/

相关文章:

php - 用最高分对数组进行排序

c# - 使用 C# (HTTP POST) 删除 (MediaWiki) 页面

javascript - 为什么使用 getJSON 调用后 API 数据仍未加载?

node.js - Node/Express RESTful 请求中存在多个参数?

php - php 应用程序中的关键代码部分?

php - 空白页诊断。如果问题

php - 使用 mysql 的存储过程进行社交排名

javascript - 获取编辑页面的用户数组

java - JERSEY - 将 javax.ws.rs.core.Response 作为 JSON 对象返回,并带有错误 :. .. 或 token :

php - 在评论中查找不同样式的日期