例如我需要查询userid在[100,200]区间的结果,大家一般怎么做?
我能想到这些(都是get):
/users/from/100/to/200
/users/100/200
/users?from=100&to=200
/users?start=100&per_page=100
大家有啥好的建议么?怎么写能看起来比较干净?
例如我需要查询userid在[100,200]区间的结果,大家一般怎么做?
我能想到这些(都是get):
/users/from/100/to/200
/users/100/200
/users?from=100&to=200
/users?start=100&per_page=100
大家有啥好的建议么?怎么写能看起来比较干净?
/users/from/100/to/200
烂,这种不分青红皂白把参数全部搞成目录的方式烂爆了
这么搞的人实际上根本不理解REST
/users/100/200
语义缺失,不好
/users?from=100&to=200
这个很正常,我会用这个
/users?start=100&per_page=100
start和page size的设计有点怪,一般都是from / to,或者 page / page size
但是,你的真正问题其实不是分页,而是userid在[100,200]区间的过滤条件,前面哪些url设计都偏离到分页的方式上去了
分页是请求 /users 资源集合,以userid排序,从x条开始,每次取y条
你的问题是请求 /users 资源集合,过滤条件为userid在100到200之间
/users?by=userid>e=100<e=200
by 以哪个属性过滤
gte 大于等于
lte 小于等于
后两种比较好
如果只是个别页面需要,那就用 /users?from=100&to=200
如果是分页的话,就是后一个/users?start=100&per_page=100
分页/users?page=1这种更好,per_page 放在controller里更好。
直接使用
/users
集合,URL不带任何参数,所有分页参数全部在请求头中设置, 按照REST设计的最佳实践, 响应中应该包含指向当前页的链接,用代码
self
标识, 指向集合中上一页的指示符prev
, 下一页指示符next
, 还应该包含一个total
标识集合的数量.这个在
RESTful Web Services Cookbook 中文版
第43页(3.7 如何设计集合表述
)有描述.PDF下载地址: http://vdisk.weibo.com/s/31DEe