Я пытаюсь разработать RESTful API с PHP без использования фреймворков. При обработке запроса, данные клиента не могут быть считаны с помощью этого: parse_str(file_get_contents("php://input"), $put_vars);
Данные запроса REST не могут быть прочитаны методом 'put'
Вот полный код:
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""
Почему не возвращается правильные данные?
EDIT
Я также протестировали another piece of code, который должен быть API и file_get_contents('php://input', true)
до сих пор возвращает нуль. Может быть, что-то не так с веб-сервером?
не используют 'echo $ data' для тестирования, используйте либо' var_dump ($ data) ', либо' print_r ($ data) ' –
Я воссоздал ваш код на своем сервере и смог запустить его с помощью команды curl и он производит требуемый результат. –