使用冗余数据设计RESTAPI:客户端或服务器端数据处理
我正在开发一个基于JSON的REST API,允许获取有关文档的信息,其中“文档”资源具有以下形式:使用冗余数据设计RESTAPI:客户端或服务器端数据处理,rest,api,Rest,Api,我正在开发一个基于JSON的REST API,允许获取有关文档的信息,其中“文档”资源具有以下形式: { "id": 1, "name": "document 1", ... "fields": [ {"name": "field1", "category": "category1", ...}, {"name": "field2", "category": "category2", ...}, ...
{
"id": 1,
"name": "document 1",
...
"fields":
[
{"name": "field1", "category": "category1", ...},
{"name": "field2", "category": "category2", ...},
...
]
}
GET/documents/:id
路径非常简单,我希望GET/documents
路径提供一系列与文档相关的基本信息,而不仅仅是链接或id,比如:
[
{"id": 1, "name": "document 1"},
...
]
现在,UI需要显示文档列表以及文档字段所属的类别列表:
- 文件1(类别1,类别2)
- 文件2(类别2、类别3、类别4)
GET/documents
的响应中将字段
添加到每个文档中,并让客户端计算类别列表(当有大量文档要显示时,这可能会导致用户体验不佳),例如:
第二种方法是在服务器端添加一段(冗余)信息,以避免在响应中添加太多数据,并避免客户端在每个文档的字段中循环(但现在API更依赖于UI如何显示数据),例如:
根据您的经验,我应该使用哪种解决方案
[
{"id": 1, "name": "document1", "fields":
[
{"name": "field1", "category": "category1", ...},
...
]
]
[
{"id", "name": "document 1", "categories": ["category1", "category2"]},
...
]