簡體   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