[英]How do I “generate” a web API from a database?
我想從數據庫自動生成Web API。 我可以使用SQL輕松查詢數據庫,但顯然這不適用於公共API。 我也可以手動編寫服務器端代碼,但這需要很長時間,因為數據庫相當大。 此外,手動編寫它將是一個非常機械和重復的任務,所以我不明白為什么程序不能為我做。
例如,假設我的數據庫中有一個名為“Announcements”的表。 我正在尋找一種方法(給定數據庫表),自動生成服務器端代碼,允許某人創建新的公告,需要正確的字段。 手動完成,這可能看起來像一個名為“create_announcement.php”的PHP文件,它需要數據庫中存在的所有字段,如公告標題,正文和作者。 當然,這也可以通過遵循一些設計模型(如REST)以更清潔的方式完成,但這只是一個例子。
我正在考慮的其他事情是:
那么我應該研究什么樣的工具呢? 人們在面對這個問題時采取的一般方法是什么?
上面的評論列出了一些很棒的現有軟件,你真的要弄清楚你是否想重新發明這個概念。
如果你自己寫這篇文章,你仍然可以節省大量時間,而不是單獨編寫每個頁面和操作,但是如果你還沒有內置的功能,那么你所談論的驗證可能會耗費你所有的時間。這些模型,如果存在的話。
簡單的東西可以從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.