Я написал заявку на отдых.
Я отправляю этот запрос json в сервис:
POST /AndroidEvent/index.php/api/events HTTP/1.1
Host: localhost
Content-Type: application/json
Cache-Control: no-cache
{ "data": { "name": "ApiTest", "city": "Budapest", "place" : "Budapest 1082 Népszínház utca 18.", "event_start_date" : "2014-09-01 00:00:00", "event_end_date" : "2014-09-21 00:00:00", "decription" : "Ez egy leírás ide", "category_id" : 1, "owner_id": 2, "coord_latitude" : "47.4544", "coord_longitude" : "47.4544", "picture_path" : "http://localhost/picture_path", "is_adult" : 0, "created_on" : "2014-09-21 00:00:00", "updated_on" : "" } }
Но на стороне сервера в routs.php я не мог получить данные поста следующим образом:
$app->request->post('data') // I will get an empty array.
Но таким образом я могу получить почтовые данные:
json_decode($app->request->getBody());
Нельзя ли получить почтовые данные с помощью $app->request->post('data')
?
Вы отправляете строку json в теле http-запроса, используя метод POST http. Таким образом, для того, чтобы прочитать его правильно, нужно json декодировать тело, а затем продолжить. Так же, как вы делаете это json_decode($app->request->getBody());
Веб-формы с method="post"
кодировать входные данные в строке запроса, а затем поместить их в тело. Переменные, отправленные таким образом, могут быть доступны с $app->request->post(<input_name>);
Путаница здесь, я думаю, что в $app->request->post(<input_name>);
post фактически ссылается на суперглобальный php $ _POST, который автоматически поддерживает для вас декодированный запрос. Это не то же самое, что HTTP-метод (глагол) POST.
Других решений пока нет …