如何在REST中处理子集合的分页



我有一个实体,其中有几个子集合。在某些情况下,这些集合可能包含许多项目(> 100)。然而,在大多数情况下,大约有1-10个,这是可以的。

当我显示主实体时,如果有超过10条记录,我希望显示这些分页子集合。

因为我不想在信封中包装我的JSON响应,所以我使用了一个Content-Range报头(例如Content-Range: entities 11-20/400),当我得到集合时,我将其添加到响应中。在这种情况下,我得到一个带有几个集合的单个实体。

(示例实体响应"GET entities/123?AnotherChildrenCollection.PageSize=15&Children.PageSize=10& anotherchildrencollection . pageindex =1"

"实体"

{ID: 123年,Children: [{ChildID: 1},…]//例如,实际总数为122AnotherChildrenCollection: [{ChildID: 1},…]//例如,实际总数为130}

到目前为止,唯一的想法是扩展Content-Range头,使用所有子集合逗号分隔并解析它。

。这样的:

含量:实体。儿童0-9/122,实体。AnotherChildrenCollection 15-29/130

是否有更好或更标准的方法来处理这个问题,因为这感觉有点像"hack"

HTTP规范不允许以这种方式使用内容范围。它只显式地调用字节范围。考虑使用链接头。

例如,

Link: <"http://foo/bar">"; rel=next

添加多个链接头,其中每个rel=值表示它们之间的关系。在您的情况下,请使用"第一个"、"上一个"、"下一个"one_answers"最后一个"。注意,如果这样做,将丢失记录的总数。这就是人们使用信封的原因之一。

编辑:看来我对HTTP规范的阅读是不准确的。相关部分所说的是客户端不需要尊重任何其他范围类型。如果他们愿意,他们仍然可以这么做。我还是会考虑使用链接头

最新更新