RESTful中可以传递等号吗


Can an Equal sign be passed in RESTful?

我的RESTful接口工作良好,直到我尝试传递WHERE语句

示例:

通过的周界:

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

URL可能看起来像这个

www.example.com/rest.php?SELECT=此&FROM=;其中='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语句中的等号把它搞砸了。我的说法正确吗?

如果是这样的话,还有什么替代方案呢?

RESTful接口是关于永久链接的资源。在数据库上公开直接查询不会封装存储层,也不是RESTful。它是一种透明的RPC机制,通过http查询数据库(直接由使用者查询)。

在您的示例中:

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

www.example.com/api/that/{id}?option=val1&option2=val2