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