我有一个大文档(存储在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服务的应用程序的良好设计至关重要。
提前感谢您的帮助。
答案 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}
下拉所需的内容。