0

WHEREステートメントを渡そうとするまで、RESTfulインターフェイスは正常に機能します

例:

渡される境界:

SELECT = "this";
FROM = "that";
WHERE = " 'ID' = 332";

URLは次のようになります

www.example.com/rest.php?SELECT=this&FROM=that&WHERE='ID'=332

それから私のphpスクリプトで

if (isset($_GET['SELECT']))
{
    $SELECT = $_GET['SELECT'];
}
if (isset($_GET['FROM'])) 
{
    $FROM = $_GET['FROM'];
}
if (isset($_GET['WHERE'])) 
{
    $WHERE = $_GET['WHERE'];
}

したがって、WHEREステートメントの等号がそれを台無しにしていると私は考えています。私はこの声明で正しいでしょうか?

もしそうなら、代替案は何でしょうか?

4

1 に答える 1

4

RESTfulインターフェースは、パーマリンクであるリソースに関するものです。データベースに直接クエリを公開しても、ストレージレイヤーはカプセル化されず、RESTfulではありません。これは、(コンシューマーによって直接)データベースにクエリを実行するためのhttpを介した透過的なRPCメカニズムです。

あなたの例では:

www.example.com/rest.php?SELECT=this&FROM=that&WHERE='ID'=332

「that」はリソースのようです。「this」はそのデータであり、idはそのオブジェクトへの一意の参照です。

したがって、より安らかにするために、次のことを考慮してください。

www.example.com/api/that/{id}

返されるデータには、「列」または属性が含まれます

{
    attr1:val1,
    attr2:val2
}

サーバーは、その/ {id}を、idを取得し、必要なSQLクエリを作成し、表形式のデータを取得し、オブジェクトにデータを入力して返すメソッドにマップできます(json、xmlなどにシリアル化...)

さらにフィルタリングする必要がある場合は、querystrng paramsを使用してオプションを制御することを検討してください(ただし、sql where句は考慮しないでください)。

www.example.com/api/that/{id}?option=val1&option2=val2
于 2012-08-27T01:08:11.767 に答える