这是对该问题的更一般化的表述(省去了Rails的特定部分)我不确定如何在RESTful Web应用程序中的资源上实现分页。假设我有一个名为的资源products,您认为以下哪种方法是最好的方法,以及原因:1.仅使用查询字符串例如。http://application/products?page=2&sort_by=date&sort_how=asc 这里的问题是我无法使用全页缓存,而且URL也不是很干净且易于记忆。2.使用页面作为资源和查询字符串进行排序例如。http://application/products/page/2?sort_by=date&sort_how=asc 在这种情况下,看到的问题是这http://application/products/pages/1不是唯一的资源,因为使用sort_by=price会产生完全不同的结果,而我仍然不能使用页面缓存。3.使用页面作为资源和URL段进行排序例如。http://application/products/by-date/page/2 我个人认为使用此方法没有问题,但是有人警告我这不是一个好方法(他没有给出原因,所以如果您知道为什么不建议这样做,请告诉我)任何建议,意见,批评都将受到欢迎。谢谢。
3 回答
江户川乱折腾
TA贡献1851条经验 获得超5个赞
我认为版本3的问题更多是“观点”问题-您将页面视为资源还是页面上的产品。
如果您将页面视为资源,那是一个很好的解决方案,因为对页面2的查询将始终产生页面2。
但是,如果您将页面上的产品视为资源,则会遇到问题,即页面2上的产品可能会发生更改(删除了旧产品或其他原因),在这种情况下,URI并不总是返回相同的资源。
例如,客户存储了指向产品列表页面X的链接,下次打开链接时,所涉及的产品可能不再位于页面X上。
当年话下
TA贡献1890条经验 获得超9个赞
我同意Fionn的观点,但是我要进一步说,页面对我来说不是资源,而是请求的属性。这使我只选择了选项1查询字符串。感觉不错。我真的很喜欢Twitter API的结构结构。不太简单,也不太复杂,有据可查。不管是好是坏,当我以一种方式与另一种方式做事时,这是我的“可行”设计。
- 3 回答
- 0 关注
- 477 浏览
添加回答
举报
0/150
提交
取消