Тонкий каркас — как работает пост-метод?

Я написал заявку на отдых.

Я отправляю этот запрос 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') ?

0

Решение

Вы отправляете строку 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.

http://docs.slimframework.com/#Request-Variables

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector