假设我们有一个返回用户列表的端点,list可以是分页
/用户偏移量= 20安培;限制= 10
当用户总数小于偏移时返回什么?空列表,错误或......?
我们是否还应该回复用户总数?或者这应该是另一个终点?
答案 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为空,则客户端无需尝试获取更多项目。但是,如果存在下一个网址,则根据您的实施情况,可能还没有更多结果(很难统计大型数据库中的总结果数,在这种情况下您不知道总数提前编号)。