我目前正在开发一个Web应用程序,它将使用大量的ajax进行数据检索。只有在用户通过身份验证后,才能访问数据的某些部分。我希望有一个易于使用的API用于其他应用程序,但目前唯一使用的API是驱动Web应用程序。
对我来说,实施REST API与更加自定义的传统API是否值得?
我已经研究过使用休息,到目前为止我已经找到了以下
答案 0 :(得分:2)
嗯,你已经给出了我能想到的三个最好的理由来回答你的问题。它归结为只有你可以给这些问题的答案。
我的方法是在我们的每个客户站点都有一个“迷你”API用于“他们”的东西,我们的“主要”API成为常见或重要功能的存储库,超出“仅仅他们的”。它们都建立在相同的基础上,因此在必要时切换和交换它们非常容易。
此外,通过将结果编码为json,我们能够在一次调用中返回许多数据项(如果需要,可以一次性返回整列表)。我建议你看ReSTLER, by Luracast,如果你想看看他们是谁做的 - 这是一个很好的起点。
编辑显示非常 simnple多值返回:
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);