黑客新闻(Hacker News)API是一个提供HN社区数据的接口,允许开发者获取最新的故事、评论、用户信息等数据。API返回JSON格式的数据,可以通过HTTP请求访问。
原因:浏览器安全策略阻止了跨域请求。
解决方案:
// 后端代理示例(Node.js)
const express = require('express');
const axios = require('axios');
const app = express();
app.get('/hn-stories', async (req, res) => {
try {
const response = await axios.get('https://hacker-news.firebaseio.com/v0/topstories.json');
res.json(response.data);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
app.listen(3000);
原因:API可能有请求频率限制。
解决方案:
原因:使用了错误的API端点。
正确端点示例:
https://hacker-news.firebaseio.com/v0/newstories.json
https://hacker-news.firebaseio.com/v0/topstories.json
https://hacker-news.firebaseio.com/v0/item/{id}.json
原因:本地网络或API服务器问题。
解决方案:
原因:JSON解析错误。
解决方案:
fetch('https://hacker-news.firebaseio.com/v0/topstories.json')
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json(); // 正确解析JSON
})
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
async function fetchHNStories() {
try {
// 1. 获取热门故事ID列表
const idsResponse = await fetch('https://hacker-news.firebaseio.com/v0/topstories.json');
const storyIds = await idsResponse.json();
// 2. 获取前10个故事的详情
const stories = await Promise.all(
storyIds.slice(0, 10).map(async id => {
const storyResponse = await fetch(`https://hacker-news.firebaseio.com/v0/item/${id}.json`);
return storyResponse.json();
})
);
// 3. 处理并显示数据
stories.forEach(story => {
console.log(`${story.title} - ${story.url}`);
});
return stories;
} catch (error) {
console.error('Failed to fetch HN stories:', error);
throw error;
}
}
// 调用函数
fetchHNStories();
如果官方API不可用,可以考虑:
通过以上方法,您应该能够成功从黑客新闻API获取JSON数据。如果问题仍然存在,建议检查具体的错误信息以进一步诊断问题。
没有搜到相关的沙龙