404关闭github api上的pull请求时

时间:2018-04-13 21:01:12

标签: python github github-api

我有以下代码用于与github api上的pull请求进行交互。

def merge(pull):
  url = "https://api.github.com/repos/{}/{}/pulls/{}/merge".format(os.environ.get("GITHUB_USERNAME"), os.environ.get("GITHUB_REPO"), pull['number'])
  response = requests.put(url, auth=get_auth(), data={})
  if response.status_code == 200:
    #Merge was successful
    return True
  else:
    #Something went wrong. Oh well.
    return response.status_code

def close(pull):
  url = "https://api.github.com/repos/{}/{}/pulls/{}".format(os.environ.get("GITHUB_USERNAME"), os.environ.get("GITHUB_REPO"), pull['number'])
  payload = {"state" : "closed"}
  response = requests.put(url, auth=get_auth(), data=payload)
  if response.status_code == 200:
    #Close was successful
    return True
  else:
    #Something went wrong. Oh well.
    return response.status_code

现在合并工作正常,当我用拉取请求运行它时,拉取请求被合并,感觉很好。

但是close给了我一个404.这很奇怪,因为merge可以清楚地找到pull请求,并且还表明我明确地设置了权限,所以我可以关闭请求。

我还确认我可以通过登录github并按下“关闭拉取请求”按钮手动关闭请求。

为什么github给我一个404关闭函数而不是合并函数?这两个功能有什么不同?

1 个答案:

答案 0 :(得分:0)

答案是“更新拉取请求”' api调用应该是POST请求,而不是put请求。

更改

response = requests.put(url, auth=get_auth(), data=payload)

response = requests.post(url, auth=get_auth(), data=payload)

修正了问题。