gpt4 book ai didi

javascript - 使用 Node Js 从多个 API 中检索并将其解析为 EJS 文件

转载 作者:行者123 更新时间:2023-12-03 03:35:26 24 4
gpt4 key购买 nike

大家好,我目前在尝试解决此问题时遇到困难,因此我正在与 https://newsapi.org/ 合作。 API 试图从多个源提取数据,但我目前无法找到一种方法并将其解析到 EJS,我可以对一个 api 源执行此操作,但不能对多个源执行此操作,这是否可能。

这是我到目前为止所想出的

    app.get("/", function(req, res){
request("https://newsapi.org/v1/articles?source=the-new-york-times&sortBy=top&apiKey=70a5906f19f844f291cff401c80bc123", function(error, response,body){
if(! error && response.statusCode == 200) {
var data = JSON.parse(body);
res.render("results", {data: data});
}
});
});

最佳答案

您可以创建一个单独的函数,从 URL 获取数据并返回 Promise。当 Promise 解析时,它将拥有 JSON 对象。然后您可以随心所欲地呈现数据。

下面是一个示例,我从三个不同的 URL 获取 3 个结果。我正在使用Promise.all在操作数据之前等待所有 3 个请求的响应。

function fetchJSON(url) {
return new Promise((resolve, reject) => {
request(url, function(err, res, body) {
if (err) {
reject(err);
} else if (res.statusCode !== 200) {
reject(new Error('Failed with status code ' + res.statusCode));
} else {
resolve(JSON.parse(body));
}
});
});
}

app.get("/", function(req, res) {
const p1 = fetchJSON('http://example.com/one');
const p2 = fetchJSON('http://example.com/two');
const p3 = fetchJSON('http://example.com/three');

Promise.all([p1, p2, p3]).then((data) => {
res.render("results", {
data_one: data[0],
data_two: data[1],
data_three: data[3]
});
}).catch(err => console.error('There was a problem', err));
});

请注意,您可以对 data 数组执行任何您想要的操作。我在渲染过程中将其分成三个单独的属性,以表明确实有 3 个结果。

关于javascript - 使用 Node Js 从多个 API 中检索并将其解析为 EJS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45885455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com