用于大型mongo文档的REST API设计

时间:2014-08-13 16:55:30

标签: node.js angularjs mongodb rest express

我有一个大文档(存储在Mongo数据库中),我应该将此文档公开为REST API。从大到大,我的意思是超过200个具有嵌套文档和嵌套文档列表的字段。 我的问题很简单,为这样的文档设计REST api的最佳方法是什么。

我看到两个选项:

1 /为文档设计单个端点

  

[GET] / api / documents ==>将返回一个包含1个doc ...

的数组      

[GET] / api / documents /:id ==>将通过它的id

返回文档

2 /为文档设计多个端点

  

[GET] / api / documents ==>返回文档的所有第一级详细信息

     

[GET] / api / documents / id / field1 ==>从文档的field1返回所有内部doc(对象数组)

     

[GET] / api / documents / id / field1 / nid ==>从文档的field1返回对象nid

将使用REST API的应用程序将读取和修改数据。

这个问题可能看起来很乏味,但对我而言,这对于使用这些REST服务的应用程序的良好设计至关重要。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我建议您使用第一种方法,添加查询参数“depth”。该参数将指示要返回的文档中要填充的深度级别。它可以默认为1或ALL,具体取决于您客户的需求。

GET /api/documents/342?depth=8
GET /api/documents/78?depth=ALL

这使他们能够灵活地获取所需的信息,而不需要在需要一个节点时使用整个文档子树来抨击它们。

/ documents的标准做法是始终返回文档集合,而不是单个文档。您可以使用查询参数来查找根文档:

GET /api/documents?root=true

然后使用根文档的ID从/api/documents/{id}下拉所需的内容。