REST api分页:使page-size成为参数(可从外部配置)

时间:2010-01-06 20:21:54

标签: api rest

我们有一个搜索/列表资源:

http://xxxx/users/?page=1

在内部,页面大小是静态的,并返回20个项目。用户可以通过增加页码来前进。但为了更加灵活,我们现在也在考虑公开页面的大小:

http://xxxx/users/?page=1&size=20

因此,这是灵活的,因为客户端现在可以在搜索时决定网络呼叫与响应的大小。当然,这有一个缺点,即服务器可能会因意外或有目的而遭受严重打击: http://xxxx/users/?page=1&size=1000000

为了获得健壮性,解决方案可以是配置页面大小的上限(例如100),当超出时,可以表示错误响应或HTTP重定向到具有最高页面大小参数的URL。

您怎么看?

3 个答案:

答案 0 :(得分:10)

就个人而言,我只会记录一个最大页面大小,任何大于此的内容都会被视为最大值。

答案 1 :(得分:3)

管理对资源的访问总是一个好主意,即保护外部接口:换句话说,设置合理的限制。

当涉及到开发时间时,重定向可能是一个好主意,即当API的用户熟悉服务但是在这种情况之外时,我怀疑它是否有价值。

确保以任何方式记录参数。

答案 2 :(得分:1)

您是否对此进行了测试以确定是否存在问题?如果用户要求的页面大小为百万,那真的会导致所有其他请求停止/减慢吗?如果是这样,我可能会首先查看您的基础架构。但是,如果最终这是一个问题,我认为设置页面大小的硬限制是不好的。

问题:当我用户获取URI http://xxx/user?page=1时,响应中是否有链接到下一页?上一页?如果不是那么它不是真的RESTful。