【发布时间】:2013-10-06 11:44:07
【问题描述】:
我正在尝试在不使用框架的情况下使用 PHP 开发 RESTful API。处理请求时,无法使用以下命令读取客户端数据:parse_str(file_get_contents("php://input"), $put_vars);
这是完整的代码:
public static function processRequest() {
//get the verb
$method = strtolower($_SERVER['REQUEST_METHOD']);
$request = new Request();
$data = array();
$put_vars = array();
switch ($method) {
case 'get':
$data = $_GET;
break;
case 'post':
$data = $_POST;
break;
case 'put':
parse_str(file_get_contents("php://input"), $put_vars);
$data = $put_vars;
echo $data;
break;
}
$request->setMethod($method);
$request->setRequestVars($data);
if (isset($data['data'])) {
$request->setData(json_decode($data));
echo 'data exists';
}
return $request;
}
我使用cURL 来休息API,当我输入这个命令时:curl -i -X PUT -d '{"name":"a","data":"data1"}'
http://localhost/my-rest-api/api/ 我只得到这个:
Array""
为什么没有返回正确的数据?
编辑
我还测试了应该是 API 的 another piece of code,而 file_get_contents('php://input', true) 仍然返回 null。会不会是网络服务器有问题?
【问题讨论】:
-
不要使用
echo $data进行测试,使用var_dump($data)或print_r($data) -
我在我的服务器上重新创建了您的代码,并且能够使用您的 curl 命令运行它并产生所需的结果。