javascript - 如何使用 Javascript 从 API 获得部分大响应?
问题描述
我有一个很大的 API 请求,它给了我大约 1000 个结果。由于这个请求太大,我需要将响应分成几个部分,这样会更快。我想查询 1000 个结果,但要像客户端一样流式传输数据
在 API 请求中,您不允许输入任何参数,因此您可以检索全部帖子。响应是一个与 Wordpress 大致相同的 JSON(但它不是 Wordpress)
我已经尝试了从 10 到 10 个结果的相同请求,但我必须执行几个查询才能达到预期的行为。
我想得到的是来自 1000 个结果的请求。
fetch(api)
.then((data) => ...)
.then((data) => {
//When loaded first 10 records show
//When loaded next 10 records show
...
// Until the 1000
})
有什么方法可以实现吗?
解决方案
后端可以通过多种方式实现流/分页,而 JS 答案取决于您查询的后端支持哪种方式。
- 通过请求参数进行分页
- HTTP 范围请求(如何在允许搜索的情况下流式传输在线电影)
- Websocket 流式传输(网络游戏如何在玩家获得实时更新的情况下工作)
因为您在评论中提到您正在查询 Wordpress,所以我将在这里举一个 Wordpress 的示例,但其他 API 可能有不同的处理流/分页的方式。
WordPress API 支持分页,如下所述:
https://developer.wordpress.org/rest-api/using-the-rest-api/pagination/
您需要做的是专门请求一个带有偏移量的页面以获取该部分结果,如下所示:
/wp/v2/posts?per_page=100&offset=1000
这将获得帖子 #1000 之后的帖子列表,其中每个页面有 100 个结果。
对于其他 API,您需要提供更多详细信息,以便我们确定如何流式传输结果。
推荐阅读
- r - plm:固定效应回归 - 索引/ID顺序
- vb.net - 使用仅加密权限 vb.net 或 powershell 发送 Outlook maiItem
- android - 当应用程序在工作资料中运行时如何从个人资料中选择图像
- angular - 在 Angular 8 中修改 npm 包
- excel - 如何在 Excel VBA 中正确使用 SelectSingleNode 来选择大型 XML 文件中的节点
- reactjs - 如何使用 cacheCall() 从智能合约中获取数组?
- mysql - MySQL子查询多行/列作为字符串
- r - 错误:参数不能解释为逻辑
- java - 在java api中获取404
- r - R Shiny:如何动态生成反应式表达