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 参数来控制选项(但不是 sql where 子句)。

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