express - GitHub API 没有响应输出
问题描述
router.get('/github/:username', (req, res) => {
try {
const options = {
uri: `https://api.github.com/users/${req.params.username}/repos/per_page=5&sort=created:asc&
client_id=${config.get('githubClientId')}&client_secret=${config.get('githubClientSecret')}`,
method: "GET",
headers: { 'user-agent': 'node.js' }
};
request(options, (error, response, body) => {
if (error) console.error(error);
if (response.statusCode !== 200)
res.status(404).json({ msg: "No user found" })
res.json(JSON.parse(body));
})
} catch (error) {
console.log(error.message);
res.status(500).send('Internal Server Error');
}
});
我正在使用 Github api 来获取用户的最新 5 个存储库。无论我提供什么用户名,我都会收到此错误:
http_outgoing.js:536
throw new ERR_HTTP_HEADERS_SENT('set');
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
我每次都得到“未找到用户”输出。
解决方案
GitHub 不再允许我们创建 OAuth 应用程序,而是您必须生成个人访问令牌。我也在使用axios,因为Request已被弃用。
const uri = encodeURI(
`https://api.github.com/users/${req.params.username}/repos?per_page=5&sort=created:asc`
);
const headers = {
'user-agent': 'node.js',
Authorization: `token ${config.get('githubToken')}`
};
const gitHubResponse = await axios.get(uri, { headers });
return res.json(gitHubResponse.data);
} catch (err) {
console.error(err.message);
return res.status(404).json({ msg: 'No Github profile found' });
}
推荐阅读
- c - 是否保证“归零”结构的填充位将在 C 中归零?
- math - Big Theta 运行时分析
- c++ - 如何对存储为“压缩稀疏行”的矩阵进行稀疏矩阵索引?
- html - 与图像背景相结合的线性渐变不显示
- python - Redhat OpenStack 的测试用例?
- c++ - 我被困在如何从文本文件中读取
- node.js - 在哪里可以找到有关 knex 错误类型的文档?
- c - C:尽管忽略了初始化和增量表达式,但 For 循环仍在执行,因此始终为真
- javascript - 1 个按钮在引导程序上打开 2 个下拉菜单
- c# - Visual Studio 或 Rider 如何读取使用 System.Diagnostics.Trace.Write 编写的消息?