好吧,你已经给出了我能想到的 3 个最好的理由来回答你的问题。它归结为只有你才能对这些问题给出的答案。
我的方法是在我们的每个客户站点中为“他们的”东西提供一个“迷你”API,而我们的“主”API 则成为超越“只是他们的”的通用或重要功能的存储库。它们都建立在相同的基础上,因此可以根据需要轻松切换和交换它们。
此外,通过将结果编码为 json,我们能够在一次调用中返回很多很多数据项(如果需要,可以同时返回整个表的列)。如果您想看看他们是谁做的,我建议您查看Luracast 的 ReSTLER - 这是一个不错的起点。
编辑显示非常简单的多值返回:
if(is_array($result)) {
echo json_encode(array_values($result));
}else{
echo json_encode($result);
}
使用 Luracast ReSTLer,此代码将在一次调用中返回 PHPInfo 包含的所有内容:
ob_start();
phpinfo($module);
$info_arr = array();
$info_lines = explode("\n", strip_tags(ob_get_clean(), "<tr><td><h2>"));
$cat = "General";
foreach($info_lines as $line)
{
preg_match("~<h2>(.*)</h2>~", $line, $title) ? $cat = $title[1] : null;
if(preg_match("~<tr><td[^>]+>([^<]*)</td><td[^>]+>([^<]*)</td></tr>~", $line, $val))
{
$info_arr[$cat][$val[1]] = $val[2];
}
elseif(preg_match("~<tr><td[^>]+>([^<]*)</td><td[^>]+>([^<]*)</td><td[^>]+>([^<]*)</td></tr>~", $line, $val))
{
$info_arr[$cat][$val[1]] = array("local" => $val[2], "master" => $val[3]);
}
}
return Utilities::arrayToObject($info_arr);