我正在编写一个 API,并希望遵循 REST 方法。据我了解,如果我想让 API 用户更新特定记录,则应该支持类型请求。当然,他们没有做,他们需要传递新数据,我的问题是如何做到这一点(在我的具体情况下,只更新指定记录的一些字段,但这在这里不那么相关)。我可以想到两种方法:在请求正文中包含数据(使用 curl: )或在查询字符串中(使用 curl: )。PUT http://server/specific_resource
GET
curl -X PUT -d "key=value" http://server/specific_resource
curl -X PUT http://server/specific_resource?key=value
不幸的是,无论我采用何种方法,似乎都很难获得所提供的数据。问题似乎是 PHP 只真正完全理解了两种 HTTP 方法,并且GET
被认为是用于文件上传。如果我在正文中包含数据,那么访问它的唯一方法似乎是通过调用。例如,不提供数据。同样,在超全球中也找不到信息。如果我不想处理原始请求正文,那么看来我必须将数据作为查询字符串参数发送,因为数据将显示为超全局的元素(等等)。POST
PUT
fopen('php://input')
http_get_request_body()
$_REQUEST
fopen('php://input')
$_GET
$_REQUEST
我专门使用 CakePHP,如果请求是 POST ,它似乎只会在我的控制器方法中填充form
数组的数组。如果在请求 URL 中使用,无论请求方法如何,查询字符串参数都放在'数组中。毫不奇怪,我不是唯一遇到这种情况的人。params
params
url
您建议的解决方案是什么?处理输入流?使用查询字符串参数?只是忘记PUT
动词并POST
改用?