通过REST接口公开数据库查询参数

时间:2010-01-19 16:45:38

标签: rest mongodb

我已经完成了REST服务的基础知识,在我的名词周围实现了“标准”列表和GET / POST / PUT / DELETE动词。

然而,我正在使用的客户群也希望拥有更强大的操作。我在后端使用Mongo DB,并且很容易暴露“更新”操作。 This page描述了Mongo如何进行更新。

为Mongo更新函数的“标准”和“objNew”部分编写一个带有几个JSON / XML /任何参数的页面很容易。也许我创建一个类似http://myserver.com/collection/update的页面,它接受一个POST(或PUT?)请求,请求主体包含该数据。擦除输入以进行恶意查询并强制执行安全性,我们已经完成了。一块蛋糕。

我的问题是:以RESTful方式公开此内容的“最佳”方式是什么?显然,我上面描述的方法不是犹太教,因为“更新”不是名词。这种事情似乎更适合SOAP / RPC方法,但其余的服务已经使用REST over HTTP,我不希望用户必须进行两种不同类型的调用。

思想?

2 个答案:

答案 0 :(得分:2)

通常,我会将其处理为:

  • url / collection
  • URL /收集/项目

  • GET集合:返回集合资源的表示

  • GET collection / item:返回项目资源的表示 (内容类型的可选URI参数:json,xml,txt等)

  • POST collection /:创建一个新项目(如果是通过XML,我使用XSD进行验证)

  • PUT集合/项目:更新现有项目

  • DELETE collection / item:删除现有项目

这有帮助吗?

答案 1 :(得分:1)

因为您知道它不适合REST,所以您只需要尽力并发明一个标准来使其工作。到目前为止,Mongo的更新功能已从REST中删除,我实际上允许在集合上使用PUT。忽略我的例子中的参数,我没有想太多。

  • PUT collection?set = {field:value}
  • PUT collection?pop = {field:1}

或者:

  • PUT collection / pop?field = 1