代码之家  ›  专栏  ›  技术社区  ›  Tim Ridgely

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

  •  1
  • Tim Ridgely  · 技术社区  · 15 年前

    我已经完成了rest服务的基础,在我的名词周围实现了“标准”列表和get/post/put/delete动词。

    然而,与我合作的客户群也希望拥有更强大的操作。我在后台使用mongo db,很容易暴露“更新”操作。 This page 描述Mongo如何进行更新。

    编写一个页面需要几个json/xml/whatever参数作为mongo update函数的“criteria”和“objnew”部分很容易。也许我会做一个像 http://myserver.com/collection/update 需要一个职位(或职位?)请求,具有包含该数据的请求正文。清除恶意查询的输入并加强安全性,我们就完成了。小菜一碟。

    我的问题是:以一种平静的方式来揭露这一点的“最佳”方法是什么?很明显,我上面描述的方法不符合犹太教义,因为“update”不是一个名词。这类事情似乎更适合于soap/rpc方法,但服务的其余部分已经在http上使用rest,我不希望用户必须进行两种不同类型的调用。

    思想?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Michael    15 年前

    既然你知道它不适合休息,你只需要尽你最大的努力,创造一个标准来让它发挥作用。mongo的更新功能与rest相去甚远,我实际上允许对集合进行放置。忽略我的例子中的参数,我没有考虑太多。

    • 收藏?set={field:value}
    • 收藏?pop={字段:1}

    或:

    • 收藏/流行音乐?字段=1
        2
  •  2
  •   mr-sk    15 年前

    通常情况下,我会将其处理为:

    • URL/集合
    • URL/集合/项目

    • 获取集合:返回集合资源的表示形式

    • get collection/item:返回项资源的表示形式 (内容类型的可选uri参数:json、xml、txt等)

    • post collection/:创建一个新项(如果通过xml,则使用xsd进行验证)

    • 放置集合/项:更新现有项

    • 删除集合/项目:删除现有项目

    有帮助吗?