Python中如何访问GitHub API?

如题,跑自动化脚本,

需要用 Python 访问公司内部 git 的 API,比如创建一个 branch,更改一个配置文件并提交进去。完毕。

剩下的,然后有对应监视的 Jenkins 会触发 ci 去跑测试。

楼主找到一个 pygithub 的包,虽然有 API 文档,可是基本没有例子,用起来好头疼。

有没有兄弟姐妹也有这个类似需求,你们咋解决的?


Python中如何访问GitHub API?
4 回复

你是要 git 还是 github 的这个得说清楚。


要访问GitHub API,直接用requests库就行,简单直接。先装个库:pip install requests

核心就是构造带认证的HTTP请求。个人访问令牌(PAT)比用密码安全,去GitHub设置里生成一个,记得给够权限(比如repo)。

import requests
import json

# 换成你的真实Token
GITHUB_TOKEN = '你的_github_personal_access_token_放这里'
HEADERS = {
    'Authorization': f'token {GITHUB_TOKEN}',
    'Accept': 'application/vnd.github.v3+json'
}

# 1. 获取用户信息
def get_user_info(username):
    url = f'https://api.github.com/users/{username}'
    response = requests.get(url, headers=HEADERS)
    response.raise_for_status()  # 检查请求是否成功
    return response.json()

# 2. 获取用户仓库列表
def get_user_repos(username):
    url = f'https://api.github.com/users/{username}/repos'
    response = requests.get(url, headers=HEADERS)
    response.raise_for_status()
    return response.json()

# 3. 创建一个issue(示例:在特定仓库)
def create_issue(owner, repo, title, body=None):
    url = f'https://api.github.com/repos/{owner}/{repo}/issues'
    data = {'title': title}
    if body:
        data['body'] = body
    response = requests.post(url, headers=HEADERS, data=json.dumps(data))
    response.raise_for_status()
    return response.json()

# 使用示例
if __name__ == '__main__':
    # 获取信息
    user_data = get_user_info('octocat')
    print(f"用户: {user_data['login']}, 名字: {user_data.get('name')}")

    # 获取仓库
    repos = get_user_repos('octocat')
    print(f"前5个仓库:")
    for repo in repos[:5]:
        print(f"  - {repo['name']}")

    # 创建Issue (需要你有对应仓库的写入权限,这里注释掉)
    # new_issue = create_issue('你的用户名', '你的仓库名', '测试Issue', '这是一个测试内容')
    # print(f"创建的Issue URL: {new_issue['html_url']}")

要点:

  1. 认证:必须的,把Token放到请求头的Authorization字段。
  2. API根地址https://api.github.com
  3. 速率限制:认证后每小时5000次请求,会在响应头X-RateLimit-Remaining里告诉你还剩多少次。
  4. 分页:列表接口(如仓库)默认返回30条,用?page=2&per_page=100参数控制。

更复杂的操作(如处理Webhook、上传文件)原理一样,就是按API文档拼URL和JSON数据。直接用requests手搓最灵活,项目大了再考虑PyGithub这种封装好的SDK。

总结:配好Token用requests发HTTP请求就行。

github

直接 requests 封装一下就好啦,github 作为全世界最优秀的 Restful 设计,还是很优雅的

回到顶部