Rest API提供分页功能-客户端希望查询超出API边界的内容

Rest API提供分页功能-客户端希望查询超出API边界的内容,rest,api,restful-architecture,Rest,Api,Restful Architecture,对于web项目,我使用的API返回教育材料(书籍、视频等)——简单来说,您可以请求: API接受的参数: 类型:接受一个或多个:[书籍、视频、软件] 主题:接受一个或多个:[科学、数学、英语、历史] 每页:接受整数,默认为2,0返回所有结果 页面:接受整数,默认为1 重要:这是一个真实用例的人为示例,因此我需要缓存的不仅仅是1或2个请求,而是几乎无限量的组合 它返回的对象如下所示: { "total-results": 15, "page": 1, "per-page":

对于web项目,我使用的API返回教育材料(书籍、视频等)——简单来说,您可以请求:

API接受的参数:

类型:接受一个或多个:[书籍、视频、软件]
主题:接受一个或多个:[科学、数学、英语、历史]
每页:接受整数,默认为2,0返回所有结果
页面:接受整数,默认为1

重要:这是一个真实用例的人为示例,因此我需要缓存的不仅仅是1或2个请求,而是几乎无限量的组合

它返回的对象如下所示:

{
    "total-results": 15,
    "page": 1,
    "per-page": 2,
    "data": [
        {
            "title": "Foobar",
            "type": "book",
            "subject-matter": [
                "history",
                "science"
            ],
            "age": 10
        },
        {
            "title": "Barfoo",
            "type": "video",
            "subject-matter": [
                "history"
            ],
            "age": 14
        }
    ]
} 
客户端希望能够允许用户在我的站点上按年龄进行过滤——因此我必须基本上查询所有内容并重新运行分页

我想建议API团队(由我们控制)也允许我按年龄进行查询,但试图向业务部门解释这一概念是徒劳的

现在,我能想到的解决方法有两个:(1)说服API团队允许我按年龄查询,或者(2)缓存请求的生命周期,默认使用“0”,并在我的端处理分页

再次强调,重要:这是一个真实用例的人为示例,因此我需要缓存的不仅仅是1或2个请求,而是几乎无限量的组合

有人有处理类似事情的经验吗

编辑:Eric Stein提出了一个非常合理的问题,以下是问答:

他的问题:“您的API团队不知道如何按年龄进行筛选?”

我的A:“他们可能认为这是一个庞大的组织,我可能会因为官僚主义而被挡在墙外,想做最坏的打算。”

我在一个项目中工作,我们使用了一个API,不得不制作更多API允许的过滤器(API不是我们的)。在这种情况下,我们决定创建一个cron脚本,该脚本使用API并将返回的数据注册到我们自己的数据库中。我们在维护这一点上遇到了很多问题(这是很多数据),但对我们来说有点有用(至少在我在项目中工作的时候是这样)


我认为,如果您可以对应用程序(以及您的客户)进行年龄筛选很重要,那么这是说服API团队允许的一个很好的论据。

您的API团队不理解按年龄筛选响应的概念?这比任何事情都更官僚。我想做最坏的打算。这是一个需要在API层解决的问题。尝试在本地缓存响应并使用它来模拟年龄过滤器是一件愚蠢的事情,除非您的数据集足够小,您可以将整个库保存在本地缓存中,在这种情况下,开发该库的成本只会高得令人望而却步。谢谢。我很感激你的反馈,希望我能给你带来更好的消息,但这似乎是你老板与API团队讨论的一个问题。