3

データベースからWebAPIを自動生成したいのですが。SQLを使用してデータベースに簡単にクエリを実行できますが、パブリックAPIの場合は明らかにこれでは機能しません。サーバー側のコードを手動で作成することもできますが、データベースがかなり大きいため、これには非常に長い時間がかかります。また、手動で書くことは非常に機械的で反復的な作業になるので、プログラムが私のためにそれを行うことができない理由がわかりません。

たとえば、データベースに「お知らせ」というテーブルがあるとします。(そのデータベーステーブルが与えられた場合)誰かが新しいアナウンスを作成できるようにするサーバー側コードを自動的に生成し、正しいフィールドを必要とする方法を探しています。手動で行うと、これは「create_announcement.php」と呼ばれるPHPファイルのようになります。このファイルには、アナウンスのタイトル、本文、作成者など、データベースに存在するすべてのフィールドが必要です。もちろん、これはいくつかの設計モデル(RESTなど)に従うことでよりクリーンな方法で行うこともできますが、これは例として意図されています。

私が検討している他のことは次のとおりです。

  • 何らかの形式の認証。たとえば、ユーザーがアナウンスを削除したい場合は、「ログイン」する必要があります。ここでこれがどのように機能するかはわかりません。
  • ロジックを追加する方法。(上記で説明したように)HTTPを介してデータベースにアクセスするためのAPIを生成できる場合、APIは特定の特異性を認識しません。アナウンスリソースには、今日以降でなければならない日付を含める必要があるとします。それをコードで表現する方法が必要です。
  • ソリューションがいくつかの設計モデルに従って、さまざまなクライアントからのアクセスを容易にすることができれば理想的です。

では、どのようなツールを調べる必要がありますか?この問題に直面したときに人々がとる一般的なアプローチは何ですか?

4

1 に答える 1

2

上記のコメントは、優れた既存のソフトウェアをいくつか挙げています。この概念を再発明するかどうかを実際に判断する必要があります。

これを自分で作成すると、各ページとアクションを個別に作成するよりも多くの時間を節約できますが、その機能が組み込まれていない場合、話している検証におそらくすべての時間が費やされます。これらのモデルが存在する場合。

簡単なものは、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);
?>

具体的に表示または非表示にするフィールドを追加することで、数時間で確実に大きな進歩を遂げることができます。

于 2012-09-30T05:18:44.910 に答える