REST架构中的分页

时间:2017-05-16 08:37:03

标签: rest restful-architecture restful-url

假设我们有一个返回用户列表的端点,list可以是分页

  

/用户偏移量= 20安培;限制= 10

当用户总数小于偏移时返回什么?空列表,错误或......?

我们是否还应该回复用户总数?或者这应该是另一个终点?

1 个答案:

答案 0 :(得分:4)

我会返回一个空数组。 URL在技术上不是错误的。它还使客户更容易处理此类案件。

我还会返回一些有关响应的元数据,包括返回项目的总数以及客户端可以从中请求下一组结果的URL。

示例:

"meta": {
  "cursor": {
    "current": "0",
    "next": "20",
    "count": 20,
    "next_url": "/items?cursor=20&limit=20"
  }
}

我会确保客户端使用URL而不是尝试解析偏移量并自行计算下一个URL。这将使其更加灵活,并允许您稍后更改实现细节。

例如,如果使用偏移值为SQL数据库构造OFFSET查询,则可能希望稍后在数据库变得非常大的情况下更改实现,并使用更有效的偏移。例如,如果项目始终按时间排序,则可以更改API以输出时间戳作为偏移量。这可能允许更有效的查询。

如果下一个URL为空,则客户端无需尝试获取更多项目。但是,如果存在下一个网址,则根据您的实施情况,可能还没有更多结果(很难统计大型数据库中的总结果数,在这种情况下您不知道总数提前编号)。