【发布时间】:2017-09-20 00:16:44
【问题描述】:
我正在使用 Node.JS,以及“请求”库 https://github.com/request/request 我阅读了文档,因为我只能从频道请求 50 个视频,作为 api 服务器的响应,有一个 nextPageToken 密钥,但我不明白如何使这个 nextPageToken 的请求链通过整个链条。
`https://www.googleapis.com/youtube/v3/search?key=${key}&channelId=${channelId}&part=snippet,id&order=date&maxResults=50`;
我草拟了这段代码
request({url:url}, function(err, response, body){
let data = JSON.parse(body);
for(let i = 0; i < Math.fround(data.pageInfo.totalResults / maxResults); i++){
let newUrl = url + '&pageToken=' + data.nextPageToken;
request({url: newUrl}, function(err, response, body){
newUrl = url + '&pageToken=' + JSON.parse(body).nextPageToken;
console.log(JSON.parse(body).nextPageToken);
})
}
})
在频道+450视频,没有想到最好的解决方案,取第一个请求的结果,除以请求视频的最大数量,我得到9-10,结果是每个循环10遍,理论上每个请求都应该更新变量newUrl 之后,再次访问服务器以获取新数据和新的nextPageToken。
怎么样?
【问题讨论】:
-
您不必计算必须发出多少请求。当您收到包含
nextPageToken的响应时,您将其设置为下一个请求的pageToken的值。然后,您重复此过程(例如在while循环中),始终使用最新的nextPageToken,直到您收到未设置nextPageToken的响应。然后你就在搜索结果的末尾。 -
嗨,我在想我会通过循环做什么,并检查服务器的最后一个回复是否包含
nextPageToken的内容,但问题在于我不能执行请求,即将等待响应的查询链,在 Answer 之后会执行新的参数...
标签: javascript json node.js request youtube-api