感谢任何帮助 - 第一次使用Django和Github API。我有一个简单的URL,我从repo的pull请求中获取api请求。我正在遍历它们到达我想要检查的diff_url属性。
在Chrome浏览器中,它工作正常,我正在显示拉动代码差异的文本输出。查看网络流量,网络呼叫将302给另一个包含令牌的URL。
隐身镀铬以及卷曲,我收到404错误。
我正在使用github3.py来获取拉模型,并请求(使用简单的身份验证)尝试从拉模型属性访问diff_url。
我想知道为什么浏览器可以工作,代码和curl都不会起作用。
这是Python代码:
def getAllPullRequestsForRepo(self, repo_name):
''' Return pull request and tag object for repository
Github: Every pull request is an issue, but not every issue is a pull request
For each pull request = issue - get associated labels
'''
# TODO look at repo array to get repository (save as object)
repoOwner = self.org_name + '/' + repo_name
github = Github(self.username, self.password)
repository = github.get_repo(repoOwner)
pullDict = []
pulls = repository.get_pulls('all')
pullDatum = {}
for pull in pulls:
assigneeName = ''
assigneeLogin = ''
if pull.assignee:
assigneeName = pull.assignee.name
assigneeLogin = pull.assignee.login
pullDatum = {
'id': pull.id,
'assignee': assigneeName,
'assignee_login': assigneeLogin,
'title': pull.title,
'body': pull.body,
'state': pull.state,
'created': pull.created_at,
'diff_url': pull.diff_url,
'diff_content': '',
'issues_url': pull.issue_url,
'issues_content': '',
'commits_url': pull.commits_url,
'commits_content': '',
}
# Get the code differences and load into diff data
diff_url_data = requests.get(pull.diff_url, auth=(self.username, self.password))
答案 0 :(得分:0)
我向github api伸出手,很高兴他们得到了很大的支持,很快就找到了解决这个问题的解决方案。谢谢伊万!以下是他们的答复,我希望能帮助其他人。
感谢您与我们联系。因此,失败的原因是diff_url指向github.com(网站)上的资源,而不是api.github.com(API)上的资源。请参阅此处的文档:
https://developer.github.com/v3/pulls/#get-a-single-pull-request
“diff_url”:“https://github.com/octocat/Hello-World/pull/1347.diff”,
由于API不提供资源,因此您无法使用API支持的身份验证机制(https://developer.github.com/v3/#authentication)。
网站和API不共享这样的身份验证机制 - 网站使用会话,API通过基本身份验证和令牌等使用无状态身份验证。
所以,这就是你能做的。你想为拉取请求获取差异,对吧?你也可以通过API获取它,如下所示:
https://developer.github.com/v3/pulls/#custom-media-types
换句话说,如果您在通过API获取拉取请求时在接受标头中包含特殊媒体类型 - 您将获得该拉取请求的原始差异。
这是一个卷曲的例子:
curl https://api.github.com/repos/rails/rails/pulls/30744 -H“接受:application / vnd.github.v3.diff”
希望这有帮助。
最佳, 伊万