我试图建立一个" API"在PHP中可以获取JSON数据数组,将其转换为PHP数据,然后更新MySQL数据库。将数据直接发布到脚本上运行正常,就像通过cURL运行它一样,但是当使用Google Chrome" Advanced Rest Client"时,我似乎无法获得响应。应用
我收到状态:200 OK消息,但Raw / Parsed响应只读取"无效数据数组。"。
这是有问题的剧本:
<?php
$api = json_decode($_POST['api'], true);
$api['ExhibitorData'] = array_values($api['ExhibitorData']);
$data = $api['ExhibitorData'][0];
$exhibitor_id = $data['exhibitor_id'];
require_once 'config-api.php4'; // database connection
// get some data based on $exhibitor_id
$do_update = mysql_query("UPDATE table SET ... WHERE exhibitor_id = $exhibitor_id");
if (!$do_update)
{
http_response_code(404);
die(mysql_error());
}
$do_another_update = mysql_query("UPDATE another_table SET ... WHERE exhibitor_id = $exhibitor_id");
if (!$do_another_update)
{
http_response_code(404);
die(mysql_error());
}
$log = mysql_query("INSERT INTO log SET exhibitor_id = $exhibitor_id, ip_address = '" . $_SERVER['REMOTE_ADDR'] . "', updated_at = NOW()");
header('Content-Type: application/json; charset=utf-8');
echo json_encode(array(mysql_insert_id() => 'OK'));
mysql_close();
按照有关创建自己的REST API的在线教程(即this one),我似乎正在做一切正确的事情,但我似乎无法获得回复。
我还有什么要做的吗?
编辑:这是我传递给脚本的JSON字符串的结构:
{
"ExhibitorData": {
"1": {
"exhibitor_id": 1,
...
}
}
}
答案 0 :(得分:0)
我设法解决了问题所在。
当您正常发布数据时,可以通过$_POST
变量访问它。然而,似乎使用cURL,尽管说它POST数据,但实际上你需要以不同的方式访问它。
更改此行:
$api = json_decode($_POST['api'], true);
到此:
$api = json_decode(file_get_contents('php://input'), true);
然后让脚本的其余部分运行正常。