【问题标题】:REST API design for a large mongo document大型 mongo 文档的 REST API 设计
【发布时间】:2014-08-13 16:55:29
【问题描述】:

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

我看到了 2 个选项:

1/ 为文档设计一个端点

[GET] /api/documents ==> 将返回一个包含 1 个文档的数组 ...

[GET] /api/documents/:id ==> 将通过它的 id 返回文档

2/ 为文档设计多个端点

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

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

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

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

这个问题可能看起来很乏味,但对我来说,这是良好设计将使用这些 REST 服务的应用程序的基础。

提前感谢您的帮助。

【问题讨论】:

    标签: node.js angularjs mongodb rest express


    【解决方案1】:

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

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

    这使他们能够灵活地提取所需的尽可能多的信息,而无需在只需要一个节点时就用整个文档子树来抨击他们。

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

    GET /api/documents?root=true
    

    然后使用根文档的 id 从/api/documents/{id} 中提取您需要的任何内容。

    【讨论】:

      猜你喜欢
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      • 2020-09-18
      • 2015-07-24
      相关资源
      最近更新 更多