我正在编写一个API,希望遵循REST方法。据我所知,如果我想让API用户更新特定的记录
PUT
http://server/specific
_resource
应支持类型请求。当然,他们不会
GET
他们需要传递新的数据,我的问题是如何做到这一点(在我的特定情况下,只更新指定记录的某些字段,但这在这里并不重要)。我可以想到两种方法:包括请求主体中的数据(使用curl:
curl -X PUT -d "key=value"
http://server/specific
_resource
)或在查询字符串中(使用curl:
curl -X PUT
http://server/specific
_resource?key=value
)
不幸的是,不管我采用什么方法,都很难获得所提供的数据。问题似乎是PHP只真正完全理解两种HTTP方法,
得到
和
POST
用
PUT
considered to be for file uploads
. 如果我在正文中包含数据,那么访问它的唯一方法似乎是
via an
fopen('php://input')
call
. 例如,
http_get_request_body()
不提供数据。同样,在
$_REQUEST
超全球。如果我不想处理原始请求主体
fopen('php://input')
然后,我似乎必须将数据作为查询字符串参数发送,因为数据将显示为
$_GET
超级全球(也如此
)
我专门使用cakephp,它似乎只填充
form
数组
params
我的控制器方法中的数组
if the request was a POST
. 输入查询字符串参数
帕拉姆
’
url
如果在请求URL中使用,则不考虑请求方法。毫不奇怪,我
not the only one
谁碰上了这个。
你建议的解决方案是什么?处理输入流?使用查询字符串参数?忘了
放
动词与用法
柱
相反?