2013-07-02 41 views
12

我想要通过github API获取所有回购请求的列表。我遵循http://developer.github.com/v3/pulls/的指示,但是当我查询'/ repos /:owner /:repo/pulls'时,它始终返回比网站上显示的更少的请求。如何通过github API获取所有回购请求的列表?

例如,当我查询torvalds/linux repo时,我得到9个打开的请求(网站上有14个请求)。如果我添加'?state = closed',我会得到一组不同的11个关闭请求(网站显示大约20个)。

有谁知道这种差异出现在哪里,并且如果有任何方法可以通过API获取回购请求的完整列表?

+0

你能再检查一次吗?有测试,预计19,得到19 – random

回答

1

有一种方法可以获得完整列表,并且您正在执行此操作。你用什么来与API沟通?我怀疑你可能没有做正确的事情。例如(目前只有13个打开的拉请求)使用我的API封装(github3.py)我得到所有打开的拉请求。如何做到这一点没有我在Python包装的一个例子是:

import requests 
r = requests.get('https://api.github.com/repos/torvalds/linux/pulls') 
len(r.json()) == 13 

,我也可以通过计算结果自己得到这一结果(隐约)在卷曲:curl https://api.github.com/repos/torvalds/linux/pulls

但是,如果您遇到超过25个(或30个)拉取请求的存储库,这是一个完全不同的问题,但绝对不是您现在遇到的问题。

+0

有没有办法获得超过30拉回要求回购?也许在不同的网络请求? – shreyj

+0

@shreyj GitHub API上的许多端点都进行了分页,并且可以使用响应中的[Link headers](http://developer.github.com/v3/#pagination)进行访问。如果你正在尝试使用python或ruby来提出请求,我当然可以帮助你。 –

3
  1. 如果你想检索所有的请求(提交,评论,问题等),你必须使用分页。 https://developer.github.com/v3/#pagination

  2. GET请求“拉”将只返回打开的拉请求。

  3. 如果您想要获取所有拉取请求,您可以将参数状态设置为全部或使用问题。

的额外信息

如果您需要从Github上的其他数据,如问题,那么你就可以找出从问题拉请求,然后你可以检索每个拉请求,不管它已关闭或打开。它还会给你更多的属性(可合并,合并,合并提交,提交等) 如果问题是拉取请求,那么它将包含该属性。否则,这只是一个问题。

从API:https://developer.github.com/v3/pulls/#labels-assignees-and-milestones

“每拉请求是一个问题,但不是每一个问题是pull请求出于这个原因,‘共享’两种功能的操作,如操作受让人,标签和在问题API中提供里程碑。“

编辑我刚刚发现的问题行为类似于拉请求,所以一个需要做的状态参数设置为所有

+0

可否请你提供获取所有拉请求的代码(witht state'all') –

+0

请原谅我,我只是看到它是由@akshaynagpal –

3

您可以通过变量state获取所有请求(关闭,打开,合并)。

在GET查询只需设置state=all,像这个 - >

https://api.github.com/repos/:owner/:repo/pulls?state=all 

欲了解更多信息:查询参数表中https://developer.github.com/v3/pulls/#list-pull-requests

+0

提供的如何从获得的结果中只滤出请求数 –

+0

我的问题是,如果我GET?state = all,它会给出一个小于?state = closed +?state = open – Akabelle

相关问题