我有一个支持分页和过滤的REST API,比如
GET /jobs?page=1&count=10&language=php&country=!UK
Host: mywebservice.com
其中1是页码,计数是每页的结果数。
问题是,我从其他网络服务获得“工作”,这也给我分页结果(我无法获得所有工作),但不支持像'country =!UK'这样的过滤器(国家不是英国)。 我会打电话给:
GET /opportunities?page=1&count=10&language=php
Host: jobs.com
在我从此服务获得作业后,我需要应用另一个过滤器(此第三方Web服务不支持 - 例如:删除特定公司或特定国家/地区的所有作业)。
在这种情况下,我将发回给用户的结果集可能少于10个作业(0到10)。
最佳做法是获得每页最佳结果数(10,用户请求的数量)以及第三方服务的最小呼叫数量?
答案 0 :(得分:1)
您有两种选择:
1)贪婪:请求3d派对服务以获取更多项目。
2)懒惰:接受发送第三次(或第三次)3D方服务的可能性
这些选项分别满足网络优化和有效负载优化。最佳解决方案取决于通过请求更多项目在第一次呼叫时获得满意响应的概率。这是一个“物有所值”的问题。尝试通过最小化向3d派对服务请求的分页项目数量来确定获得10个项目的最有利概率。
一个好主意也是通过执行贪婪策略并使用第二个请求作为后备解决方案来使用组合方法。如果你很好地计算出预测性,你将通过最小化请求数量和有效负载权重来寻求最佳解决方案。