节点:如何使用https模块对请求进行分页?

迈拉·迪亚兹·玛拉菲尼

我不知道如何使用https模块使用Node来分页请求

这就是问题:

给定一个字符串substr,我必须从电影数据库中检索信息。有多个要检索的页面。

查询应读取https://jsonmock.hackerrank.com/api/movies/search/?Title=substr&page=pageNumber,替换substrpageNumber

来自网站的查询响应是具有以下五个字段的JSON响应:

  • page: 当前页面

  • per_page:每页的最大结果数

  • total:搜索结果中的记录总数

  • total_pages:要获得所有结果,必须查询的总页数

  • data:包含电影信息的JSON对象数组

查询的响应为https://jsonmock.hackerrank.com/api/movies/search/?Title=spiderman&page=1

{
 "page": "1",
 "per_page": 10,
 "total": 13,
 "total_pages": 2,
 "data": [
    {
      "Title": "Italian Spiderman",
      "Year": 2007,
      "imdbID": "tt2705436"
    },
... //9 more responses
 ]
}

这是一种方法,尽管我查询了第一页:

const https = require('https');

const getMovieTitles = (substr) => {
  let currentPage = 1;
  https.get(
    `https://jsonmock.hackerrank.com/api/movies/search/?Title=${substr}&page=${currentPage}`,
    (res) => {
      console.log(res.statusCode);
      let all_chunks = [];
      res.setEncoding('utf8');
      let rawData = '';
      res.on('data', (chunk) => {
        rawData += chunk;
      });
      res.on('end', () => {
        const parsedData = JSON.parse(rawData);
        console.log(parsedData);
      });
    }
  );
};

getMoviTitles函数应返回一个字符串数组:

[ 
  "Italian Spiderman",
  "Superman, Spiderman or Batman",
  "Spiderman",
  "Spiderman",
  "Fighting, Flying and Driving: The Stunts of Spiderman 3",
  "Spiderman and Grandma",
  "The Amazing Spiderman T4 Premiere Special",
  "Amazing Spiderman Syndrome",
  "Hollywood's Master Storytellers: Spiderman Live",
  "Spiderman 5",
  "They Call Me Spiderman",
  "The Death of Spiderman",
  "Spiderman in Cannes"
]

那么,如何遍历page参数并处理接收到的数据?

徐伯

拉动页面后,getMovieTitles()应该检查是否还有更多页面-如果是,请循环至下一页,直到所有页面都被下载为止。

我添加了新的内部函数loadNextPage()来对您的代码进行实际工作,并将结果累积在dataUntilNow

const https = require('https');


function getMovieTitles(substr) {
  let currentPage = 0;
  let dataUntilNow = [];

  function loadNextPage() {
    currentPage++;
    console.log(`Fetching page ${currentPage}`);

    https.get(
      `https://jsonmock.hackerrank.com/api/movies/search/?Title=${substr}&page=${currentPage}`,
      (res) => {
        console.log(res.statusCode);
        let all_chunks = [];
        res.setEncoding('utf8');
        let rawData = '';
        res.on('data', (chunk) => {
          rawData += chunk;
        });
        res.on('end', () => {
          const parsedData = JSON.parse(rawData);
          dataUntilNow.splice(-1, 0, ...parsedData.data);

          const parsedPage = parseInt(parsedData.page);
          if (!isNaN(parsedPage) && typeof parsedData.total_pages == 'number' && parsedPage < parsedData.total_pages)
            loadNextPage();
          else
            console.log(dataUntilNow.map(e => e.Title));
        });
      }
    );
  };
  loadNextPage();
}

getMovieTitles('spiderman');

这会将期望的结果输出到控制台。如果要返回结果,则必须使用回调或Promise,因为它将异步可用。

例如:

function getMovieTitles(substr, next) {
...
              else
                next(dataUntilNow.map(e => e.Title));
...
getMovieTitles('spiderman', console.log);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尝试使用节点请求进行身份验证

来自分类Dev

如何正确使用Siege对GET请求进行基准测试?

来自分类Dev

如何在 Express 中使用请求进行 POST

来自分类Dev

sequelize是否可以使用嵌套的预加载来对嵌套的请求进行分页?

来自分类Dev

使用请求进行网页搜集-Python

来自分类Dev

Node.js请求模块....在主体中发送JSON以使用api请求进行API请求

来自分类Dev

Node.js请求模块....在主体中发送JSON以使用api请求进行API请求

来自分类Dev

Rails&Devise使用POST请求进行注销。如何将其更改为DELETE请求?

来自分类Dev

如何使用Android Studio和Web Api通过相同的请求进行发布和获取

来自分类Dev

如何使用Passport / Facebook策略/对Supertest请求进行身份验证?

来自分类Dev

使用Python请求进行Twitter抓取时如何执行oauth

来自分类Dev

如何在Laravel 8中使用请求进行验证?

来自分类Dev

如何使用Android Studio和Web Api通过相同的请求进行发布和获取

来自分类Dev

Spring如何自动使用https进行请求?

来自分类Dev

如何对Django rest框架请求进行单元测试?

来自分类Dev

如何对AFNetworking请求进行单元测试

来自分类Dev

如何按相关属性对获取请求进行排序?

来自分类Dev

对准备好的 AJAX 请求进行分页的最快和最安全的方法

来自分类Dev

使用ElementTree和请求进行XML解析

来自分类Dev

使用Python请求进行Cookie身份验证

来自分类Dev

使用lxml和请求进行Web抓取

来自分类Dev

使用请求进行身份验证后的Web抓取

来自分类Dev

使用Java http请求进行Twitch身份验证

来自分类Dev

表单验证后使用ajax请求进行cfform验证

来自分类Dev

使用bash脚本与终端输入请求进行交互

来自分类Dev

使用Python脚本响应中的请求进行Web抓取

来自分类Dev

使用启用 Cookie 的 Python 请求进行 Web 爬网

来自分类Dev

如何使用请求js(节点js模块)池

来自分类Dev

禁止在Play上通过https请求进行HTTP重定向!1.2.x

Related 相关文章

  1. 1

    尝试使用节点请求进行身份验证

  2. 2

    如何正确使用Siege对GET请求进行基准测试?

  3. 3

    如何在 Express 中使用请求进行 POST

  4. 4

    sequelize是否可以使用嵌套的预加载来对嵌套的请求进行分页?

  5. 5

    使用请求进行网页搜集-Python

  6. 6

    Node.js请求模块....在主体中发送JSON以使用api请求进行API请求

  7. 7

    Node.js请求模块....在主体中发送JSON以使用api请求进行API请求

  8. 8

    Rails&Devise使用POST请求进行注销。如何将其更改为DELETE请求?

  9. 9

    如何使用Android Studio和Web Api通过相同的请求进行发布和获取

  10. 10

    如何使用Passport / Facebook策略/对Supertest请求进行身份验证?

  11. 11

    使用Python请求进行Twitter抓取时如何执行oauth

  12. 12

    如何在Laravel 8中使用请求进行验证?

  13. 13

    如何使用Android Studio和Web Api通过相同的请求进行发布和获取

  14. 14

    Spring如何自动使用https进行请求?

  15. 15

    如何对Django rest框架请求进行单元测试?

  16. 16

    如何对AFNetworking请求进行单元测试

  17. 17

    如何按相关属性对获取请求进行排序?

  18. 18

    对准备好的 AJAX 请求进行分页的最快和最安全的方法

  19. 19

    使用ElementTree和请求进行XML解析

  20. 20

    使用Python请求进行Cookie身份验证

  21. 21

    使用lxml和请求进行Web抓取

  22. 22

    使用请求进行身份验证后的Web抓取

  23. 23

    使用Java http请求进行Twitch身份验证

  24. 24

    表单验证后使用ajax请求进行cfform验证

  25. 25

    使用bash脚本与终端输入请求进行交互

  26. 26

    使用Python脚本响应中的请求进行Web抓取

  27. 27

    使用启用 Cookie 的 Python 请求进行 Web 爬网

  28. 28

    如何使用请求js(节点js模块)池

  29. 29

    禁止在Play上通过https请求进行HTTP重定向!1.2.x

热门标签

归档