【问题标题】:404 when closing pull request on github api关闭 github api 上的拉取请求时出现 404
【发布时间】:2018-04-13 21:01:12
【问题描述】:

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

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 可以清楚地找到拉取请求,并且还表明我清楚地设置了正确的权限,因此我可以关闭请求。

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

为什么 github 给我一个 404 的 close 函数而不是 merge 函数?这两个函数有什么不同?

【问题讨论】:

标签: python github github-api


【解决方案1】:

答案是'update a pull request' api 调用应该是 POST 请求,而不是 put 请求。

变化

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

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

解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    相关资源
    最近更新 更多