我已经写我自己的RESTful的API,我想知道如何对付大量的从API返回的记录的最佳方法。
例如,如果我用GET
方法myapi.co.uk/messages/
这将带回XML的所有消息记录,在某些情况下可能是1000年。 这使得使用API非常缓慢。
任何人都可以提出处理这个问题的最好方法? 它是标准分批返回结果,并在请求中指定批量大小?
我已经写我自己的RESTful的API,我想知道如何对付大量的从API返回的记录的最佳方法。
例如,如果我用GET
方法myapi.co.uk/messages/
这将带回XML的所有消息记录,在某些情况下可能是1000年。 这使得使用API非常缓慢。
任何人都可以提出处理这个问题的最好方法? 它是标准分批返回结果,并在请求中指定批量大小?
你可以改变你的API,包括额外的参数来限制你的应用程序返回的数据的范围。
例如,您可以添加limit
和offset
参数获取只是一小部分。 这是怎么分页可根据REST来完成。 像这样的请求将导致从消息收集获取10种资源,从21日至30日。 这样,您就可以要求一个巨大的数据集的特定部分:
myapi.co.uk/messages?limit=10&offset=20
降低负载的另一种方法是只问你的资源表示的某些部分。 这里的Facebook是如何做的:
/joe.smith/friends?fields=id,name,picture
请记住,在使用这些方法之一,您必须提供客户发现彼此的资源的一种方式。 你不能假设他们会只看参数,并开始搜索数据的改变它们。 这将是一个违反了REST范式。 必要的超链接提供给他们,以避免它。
我强烈建议观看上的RESTful API设计此演示文稿由apigee (截屏被称为“教狗休息”)。 好的做法和巧妙的想法接近日常问题有讨论。
编辑:该视频已更新了很多次,因为我张贴了这个答案,你可以检查出从2013年1月第3版