javascript - 使用 API - 如何连接到 API
问题描述
我已经编写了大部分代码,但我不确定我在这方面做错了什么:
let url = 'https://cors-anywhere.herokuapp.com/https://newsapi.org/v2/top-headlines?sources=hacker-news&apiKey=3dcfcd098261443dae7c7d002f25c062';
fetch(url)
.then(r =>{
return r.json();
})
.then(data => {
let articles = data.articles;
let storyList = document.createElement("ul");
let body = document.querySelector("body");
body.appendChild(storyList);
})
articles.map(articles => {
let storyItem = document.createElement("li");
storyItem.innerHTML = 'a href = "' + articles.href + '">' + articles.title + "</a>";
storyList.appendChild(storyItem);
})
.catch(e => {
console.log('An error has occurred: ${e}');
});
我已经< >
从 API 代码中取出并尝试切换一些东西,比如切换一些属性来表达不同的内容,但是有人可以帮助我更好地理解这一点吗?提前致谢!
解决方案
你做错了几件事。
- 当您使用的 API 允许 cors 请求时,无需使用代理。
- 您试图在承诺解决之前访问超出范围的“文章”
您在“文章”数组上使用了错误的方法 IMO。从这里开始:Array.prototype.map()
map() 方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。
但您并没有尝试创建一个新数组,您只是想迭代数组的元素。这就是Array.prototype.forEach()的用途。
您在模板文字上使用了单引号 ' 而不是反引号 `
let url = 'https://newsapi.org/v2/top-headlines?sources=hacker-news&apiKey=3dcfcd098261443dae7c7d002f25c062';
fetch(url)
.then(response => {
return response.json();
})
.then(data => {
let list = document.createElement('ul');
document.querySelector("body").appendChild(list);
data.articles.forEach(article => {
let item = document.createElement('li');
item.innerHTML = '<a href="' + article.url + '">' + article.title + "</a>";
list.appendChild(item);
});
})
.catch(e => {
console.log(`An error has occurred: ${e}`);
});
推荐阅读
- sql-server - 在 SQL Server 上插入数据时如何填补身份空白?
- javascript - 如何使用扩展运算符来展平javascript中的对象数组
- javascript - 基于条件的VueJS HTML元素类型
- javascript - Number.EPSILON 和 Number.MIN_VALUE。为什么两个不同?
- amazon-web-services - 使用 AWS Lambda 时如何限制来自 Cloudwatch 的不需要的日志?
- java - UnitTest - 测试方法总是返回空地图
- android - 使用 GithubBrowserSample 在 viewmodel 中进行存储库方法调用而不使用 transformation.switchmap
- reactjs - 在反应中创建一个按钮,单击该按钮会打开一个网页
- javascript - 如何在 Bokeh 中为多选小部件实现 Javascript 回调
- c# - 如何在我的控制器中提取从邮递员以 zip 文件形式发送的文件