使用冗余数据设计REST API:客户端或服务器端数据处理

时间:2017-08-14 07:48:05

标签: rest api

我正在开发一个基于JSON的REST API,允许获取有关“文档”资源具有以下形式的文档的信息:

{
    "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"},
    ...
]

现在,用户界面需要显示文档列表,其中包含文档字段所属的类别列表:

  • 文件1(category1,category2)
  • 文件2(类别2,类别3,类别4)
  • ...

第一个解决方案是在fields的响应中将GET /documents字段添加到每个文档中,并让客户端计算类别列表(这可能会导致用户体验较差的用户体验要显示的很多文件),例如:

[
    {"id": 1, "name": "document1", "fields":
    [
        {"name": "field1", "category": "category1", ...},
        ...
    ]
]

第二个是添加那个(冗余)信息服务器端,以避免在响应中添加太多数据,并避免客户端遍历每个文档的字段(但现在API更依赖于如何UI呈现数据),例如:

[
    {"id", "name": "document 1", "categories": ["category1", "category2"]},
    ...
]

根据您的经验,我应该使用哪种解决方案?

0 个答案:

没有答案