GitHub API 请求示例(使用 axios

1. 获取仓库信息

const axios = require('axios');
 
const getRepositoryInfo = async (owner, repo) => {
    try {
        const response = await axios.get(`https://api.github.com/repos/${owner}/${repo}`);
        console.log(response.data);
    } catch (error) {
        console.error(error);
    }
};
 
getRepositoryInfo('octocat', 'Hello-World');

2. 列出仓库中的文件

const getRepositoryContents = async (owner, repo, path) => {
    try {
        const response = await axios.get(`https://api.github.com/repos/${owner}/${repo}/contents/${path}`);
        console.log(response.data);
    } catch (error) {
        console.error(error);
    }
};
 
getRepositoryContents('octocat', 'Hello-World', 'README.md');

3. 获取文件内容

const getFileContent = async (owner, repo, path) => {
    try {
        const response = await axios.get(`https://api.github.com/repos/${owner}/${repo}/contents/${path}`, {
            responseType: 'arraybuffer'
        });
        const fileContent = Buffer.from(response.data).toString('utf-8');
        console.log(fileContent);
    } catch (error) {
        console.error(error);
    }
};
 
getFileContent('octocat', 'Hello-World', 'README.md');

4. 搜索代码

const searchCode = async (query, owner, repo) => {
    try {
        const response = await axios.get(`https://api.github.com/search/code`, {
            params: {
                q: `${query} repo:${owner}/${repo}`
            }
        });
        console.log(response.data);
    } catch (error) {
        console.error(error);
    }
};
 
searchCode('console.log', 'octocat', 'Hello-World');

5. 获取用户信息

const getUserInfo = async (username) => {
    try {
        const response = await axios.get(`https://api.github.com/users/${username}`);
        console.log(response.data);
    } catch (error) {
        console.error(error);
    }
};
 
getUserInfo('octocat');

6. 列出用户的仓库

const getUserRepositories = async (username) => {
    try {
        const response = await axios.get(`https://api.github.com/users/${username}/repos`);
        console.log(response.data);
    } catch (error) {
        console.error(error);
    }
};
 
getUserRepositories('octocat');

7. 获取拉取请求

const getPullRequest = async (owner, repo, pullNumber) => {
    try {
        const response = await axios.get(`https://api.github.com/repos/${owner}/${repo}/pulls/${pullNumber}`);
        console.log(response.data);
    } catch (error) {
        console.error(error);
    }
};
 
getPullRequest('octocat', 'Hello-World', 1);

8. 列出问题

const getIssues = async (owner, repo) => {
    try {
        const response = await axios.get(`https://api.github.com/repos/${owner}/${repo}/issues`);
        console.log(response.data);
    } catch (error) {
        console.error(error);
    }
};
 
getIssues('octocat', 'Hello-World');

9. 检查速率限制

const checkRateLimit = async (token) => {
    try {
        const response = await axios.get('https://api.github.com/rate_limit', {
            headers: {
                'Authorization': `token ${token}`
            }
        });
        console.log(response.data);
    } catch (error) {
        console.error(error);
    }
};
 
checkRateLimit('YOUR_ACCESS_TOKEN');

备注

  • 身份认证: 如果需要访问受限数据或提高请求限制,请在请求头中添加 Authorization 字段。
  • 错误处理: 示例中使用了基本的错误处理,建议在实际开发中根据需求进行更详细的处理。
  • 响应格式: 有些请求的响应需要进行处理(如文件内容),确保根据实际情况进行解码或解析。

这些示例可以作为你与 GitHub API 交互的基础,你可以根据实际需要进行调整和扩展。

参考文档