设计REST API时的分页请求策略

时间:2012-07-24 21:14:57

标签: rest pagination

我必须决定从列表中返回结果的分页策略。特别是,我正在考虑两种方法:

列出50到75的结果的示例:

使用查询参数:GET /items?start=50&limit=25

赞成

  • 广泛使用
  • 可收藏

缺点

  • 您可能需要对URL(“&”字符)进行编码以将其置于XML响应(符合HATEOAS),在这种情况下,URL将不会非常友好。

嵌入在URL(作为子资源的页面):GET /items/from-page-50-limited-to-25

赞成

  • 根据需要人类可读(不是必需的,但似乎是一件好事)
  • 无需编码

缺点

  • 构建URL客户端更难一点
  • 页面实际上不是项目的子资源,而是列表项目策略的子产品

在您看来,哪种最佳REST练习方法?

提前致谢!

1 个答案:

答案 0 :(得分:1)

我相信你通过研究指出了什么是最佳实践,并且说你们的第一个选项被广泛使用。它也是我认为最符合查询组件如何使用的选项。在RFC 3986中,它声明了

  

查询组件包含非分层数据   路径组件中的数据(第3.3节)用于识别a   资源

(来自Querystring in REST Resource url)。

另一种看待它的方法是你的第二个选择是说/items/from-page-50-limited-to-25是一个统一资源/实体,而且是/items/from-page-1-limited-to-25。对我来说,更自然地认为/items是我可以选择集合的独特资源。