我正在构建一个应用程序来从 SkyScanner(使用 RapidApi)检索数据。基本上我必须使用 API “打开会话”,然后获取会话密钥来提取结果。- 这不是问题。
当我得到结果时,我需要检查结果正文(而不是标题)是否具有“UpdatesPending”的状态。如果是这样 - 我需要将这些结果发送到客户端,但通过另一个 API 请求继续提取结果,直到我得到“UpdatesComplete”的结果。
希望在这里得到一点帮助。
我试图做一个 if 语句,但它似乎没有解决它.. 我正在使用 Node.js 和 request-promise lib。
rp(options)
.then(response => {
let index = response.headers.location.lastIndexOf("/");
console.log(index);
let sessionKey = response.headers.location.slice(index + 1);
console.log(sessionKey);
return sessionKey;
})
.then(sessionKey => {
let options = {
method: "GET",
url: `https://skyscanner-skyscanner-flight-search-v1.p.rapidapi.com/apiservices/pricing/uk2/v1.0/${sessionKey}`,
qs: { pageIndex: "0", pageSize: "10", sortType: "price", stops: stops },
headers: {
"x-rapidapi-host":
"skyscanner-skyscanner-flight-search-v1.p.rapidapi.com",
"x-rapidapi-key": `${RapidapiKey}`
},
resolveWithFullResponse: true
};
let status;
console.log("first status", status);
rp(options)
.then(response => {
status = JSON.parse(response.body).Status;
res.status(200).write(response.body);
if (status !== "UpdatesComplete") {
rp(options)
.then(response => {
console.log(JSON.parse(response.body).Status);
status = JSON.parse(response.body).Status;
res.status(200).write(response.body);
return response;
})
.catch(err => {
console.log(err);
});
console.log("inside if status", status);
}
return response;
})
.catch(err => {
console.log(err);
});
})
.catch(err => {
console.log(err);
});