我写了一份休息服务申请表。
我将此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" : "" } }
但是在routes.php的服务器端,我无法以这种方式获取帖子数据:
$app->request->post('data') // I will get an empty array.
但是通过这种方式我可以得到帖子数据:
json_decode($app->request->getBody());
使用$app->request->post('data')
答案 0 :(得分:3)
您正在使用POST http方法在http请求正文中发送json字符串。所以为了读它正确的方法是json解码身体然后继续。就像你正在做json_decode($app->request->getBody());
带有method="post"
的Web表单在查询字符串中编码输入,然后将其放入正文中。可以使用$app->request->post(<input_name>);
我认为这里的混淆是$app->request->post(<input_name>);
帖子实际上是指php的$ _POST超全局,它自动为你保存解码的查询。它与http方法(动词)POST不同。