繁体   English   中英

如何从数据库“生成”Web API?

[英]How do I “generate” a web API from a database?

我想从数据库自动生成Web API。 我可以使用SQL轻松查询数据库,但显然这不适用于公共API。 我也可以手动编写服务器端代码,但这需要很长时间,因为数据库相当大。 此外,手动编写它将是一个非常机械和重复的任务,所以我不明白为什么程序不能为我做。

例如,假设我的数据库中有一个名为“Announcements”的表。 我正在寻找一种方法(给定数据库表),自动生成服务器端代码,允许某人创建新的公告,需要正确的字段。 手动完成,这可能看起来像一个名为“create_announcement.php”的PHP文件,它需要数据库中存在的所有字段,如公告标题,正文和作者。 当然,这也可以通过遵循一些设计模型(如REST)以更清洁的方式完成,但这只是一个例子。

我正在考虑的其他事情是:

  • 某种形式的身份验证。 例如,如果用户想要删除公告,则应该要求他/她“登录”以执行此操作。 我不确定这是如何运作的。
  • 一些添加逻辑的方法。 如果我可以生成一个API来通过HTTP访问数据库(正如我上面所描述的那样),API将不会意识到某些特定性。 假设公告资源应该包含一个必须今天之后的日期。 我需要一种在代码中表达的方法。
  • 如果解决方案可以遵循某些设计模型以使其更容易从不同客户端访问,那将是理想的。

那么我应该研究什么样的工具呢? 人们在面对这个问题时采取的一般方法是什么?

上面的评论列出了一些很棒的现有软件,你真的要弄清楚你是否想重新发明这个概念。

如果你自己写这篇文章,你仍然可以节省大量时间,而不是单独编写每个页面和操作,但是如果你还没有内置的功能,那么你所谈论的验证可能会耗费你所有的时间。这些模型,如果存在的话。

简单的东西可以从URL中获取表名,操作名,ID号并吐出基本内容。

<?
$allowed_tables = array('posts','comments','people');

$table = $_GET['table'];
$page = (int) $_GET['page'];

$per_page = 100;
$offset = ($page - 1) * $per_page;

if (!$table || !in_array($table, $allowed_tables)) {
    die('Invalid table.');
}


$rs = mysql_query("SELECT * FROM `$table` ORDER BY `id` DESC LIMIT $per_page, $offset");
$data = array();

if ($rs && mysql_num_rows($rs)) {
    while ($row = mysql_fetch_array($rs,MYSQL_ASSOC)) {
        $data[] = $row;
    }
}

print json_decode($data);
?>

你肯定可以在几个小时内取得一些重大进展,在字段中添加专门的显示或隐藏,你甚至可以在简单的基础上处理验证(必填字段很简单),现在只是为了让它滚动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM