我如何使用 Javascript 从 API 中获得部分大响应?

How can I get portions of a big response from an API using Javascript?

我有一个很大的 API 请求,它给我大约 1000 个结果。由于这个请求太大,我需要将响应分成几个部分,这样会更快。我想查询 1000 个结果,但数据流与客户端一起提供

在 API 请求中,您不允许输入任何参数,因此您检索了全部帖子。响应是 JSON 与 Wordpress 基本相同(但它不是 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
    })

有什么方法可以实现吗?

后端可以通过多种方式实现 streaming/pagination,JS 答案取决于您查询的后端支持哪种方式。

  • 通过请求参数分页
  • HTTP 范围请求(如何在允许搜索的情况下流式传输在线电影)
  • Websocket 流式传输(网页游戏如何让玩家获得实时更新)

因为您在评论中提到您正在查询 Wordpress,所以我将在此举一个 Wordpress 的示例,但其他 API 可能有不同的处理方式 streaming/pagination。

WordPress API 支持分页,如下所述:

https://developer.wordpress.org/rest-api/using-the-rest-api/pagination/

您需要做的是专门请求一个带有偏移量的页面来获取那部分结果,如下所示:

 /wp/v2/posts?per_page=100&offset=1000

这将在 post #1000 之后获取 post 的列表,其中每个页面有 100 个结果。

对于其他 API,您需要提供更多详细信息,以便我们确定如何流式传输结果。

了解您如何获得结果非常重要。例如,如果你使用流式传输,数据是同时到来的,你就不必处理这类问题。

您可以查看以下链接以获取后端数据流。

The WebSocket protocol enables interaction between a web client (such as a browser) and a web server with lower overheads, facilitating real-time data transfer from and to the server

Reference

最后我所做的是通过许多查询不同的页面进行检索,数据表逐渐更新为来自新查询的新记录