首页 > 解决方案 > 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

我每次都得到“未找到用户”输出。

标签: expressgithub-api

解决方案


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' });
}

推荐阅读