Я собираюсь создать небольшой веб-сервис в соответствии с архитектурой REST и использую Slim Framework для управления маршрутизацией. Я определил пост-маршрут, чтобы иметь возможность добавить пользователя, например, в базу данных, отправив запрос на публикацию с другого сервера с помощью расширения curl, запрос отправлен, но я не могу найти способ получить отправленные данные для их обработки. в моей функции обратного вызова, определенной в маршрутизации. Я позволил коду говорить за себя:
1-й маршрут
$app->post('/users/create/', function ($data) use($app)
{
$app->response->status(201);
echo "The user ".$data['name']." was added successfully";
}
);
затем отправка запроса с помощью curl (с другой страницы)
$data = array(
'id' => 3,
'name' => 'Gree3a'
);
$url = "http://localhost/api/users/create/";
$ic = curl_init();
//set options
curl_setopt($ic, CURLOPT_URL, $url);
curl_setopt($ic, CURLOPT_POST, true);
curl_setopt($ic, CURLOPT_POSTFIELDS, $data);
curl_setopt($ic, CURLOPT_RETURNTRANSFER, true);
//perform our request
$result = curl_exec($ic);
curl_close($ic);
echo $result;
я что-то пропустил ?
Возможно, вы защитили свой маршрут, если это так, вы должны поставить следующую опцию:
curl_setopt($ch, CURLOPT_USERPWD, "user:password");
ОК, я узнал, я изменил строку:
curl_setopt($ic, CURLOPT_POSTFIELDS, $data);
ДО:
curl_setopt($ic, CURLOPT_POSTFIELDS, http_build_query($data));
а затем в маршруте я использовал $ _POST [‘name’], и это сработало.