我们有一个搜索/列表资源:
在内部,页面大小是静态的,并返回20个项目。用户可以通过增加页码来前进。但为了更加灵活,我们现在也在考虑公开页面的大小:
http://xxxx/users/?page=1&size=20
因此,这是灵活的,因为客户端现在可以在搜索时决定网络呼叫与响应的大小。当然,这有一个缺点,即服务器可能会因意外或有目的而遭受严重打击:
http://xxxx/users/?page=1&size=1000000
为了获得健壮性,解决方案可以是配置页面大小的上限(例如100),当超出时,可以表示错误响应或HTTP重定向到具有最高页面大小参数的URL。
您怎么看?
答案 0 :(得分:10)
就个人而言,我只会记录一个最大页面大小,任何大于此的内容都会被视为最大值。
答案 1 :(得分:3)
管理对资源的访问总是一个好主意,即保护外部接口:换句话说,设置合理的限制。
当涉及到开发时间时,重定向可能是一个好主意,即当API的用户熟悉服务但是在这种情况之外时,我怀疑它是否有价值。
确保以任何方式记录参数。
答案 2 :(得分:1)
您是否对此进行了测试以确定是否存在问题?如果用户要求的页面大小为百万,那真的会导致所有其他请求停止/减慢吗?如果是这样,我可能会首先查看您的基础架构。但是,如果最终这是一个问题,我认为设置页面大小的硬限制是不好的。
问题:当我用户获取URI http://xxx/user?page=1
时,响应中是否有链接到下一页?上一页?如果不是那么它不是真的RESTful。