使用GitHub API创建Pull Request返回200未成功,是否请求体有误?
原因排查及修复方案
1. 请求体分支配置错误(当前最核心问题)
你提交的请求体中head与base指向完全一致的分支:
base设置为目标仓库的master分支head设置为owner:master,与base分支完全重合
Pull Request的创建前提是两个分支存在可对比的提交差异,没有差异的情况下GitHub不会生成新PR,此时API返回200但实际没有创建动作。
修复方式:将head参数修改为你的功能分支,格式为[用户名]:[功能分支名],确保该分支相对于base分支有新增提交。
2. 请求方法使用错误
GitHub创建PR的接口要求使用POST请求,若你误使用GET请求调用该接口,API会返回当前仓库已有PR列表,状态码为200但不会执行创建逻辑。
修复方式:将请求方法改为POST。
3. 请求体格式传递错误
若你使用Python requests库调用接口,直接把字典传给data参数时,请求会以application/x-www-form-urlencoded格式发送,不符合GitHub API要求的JSON格式,导致参数解析失败。
修复方式:发送请求时使用json参数传递请求体,示例代码:
response = requests.post( url="https://api.github.com/repos/{owner}/{repo}/pulls", headers=headers, json=data )
4. Token权限不足
你使用的token虽然有效,但可能未开启repo范围的写权限,部分场景下GitHub会返回200但拒绝创建操作。
修复方式:在GitHub开发者设置中检查对应token的权限,开启repo读写权限。
内容的提问来源于stack exchange,提问作者marks
相关产品推荐
相关产品推荐

