要访问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']}")
要点:
- 认证:必须的,把Token放到请求头的
Authorization字段。
- API根地址:
https://api.github.com。
- 速率限制:认证后每小时5000次请求,会在响应头
X-RateLimit-Remaining里告诉你还剩多少次。
- 分页:列表接口(如仓库)默认返回30条,用
?page=2&per_page=100参数控制。
更复杂的操作(如处理Webhook、上传文件)原理一样,就是按API文档拼URL和JSON数据。直接用requests手搓最灵活,项目大了再考虑PyGithub这种封装好的SDK。
总结:配好Token用requests发HTTP请求就行。