如何使用API​​删除GitHub存储库

Pav*_*kov 15 github-api

我熟悉GitHub API http://developer.github.com/v3/我正在尝试使用RESTClient插件和Firefox以及curl命令行工具.

我已经了解了如何使用API​​创建一个repo,但我似乎无法使用API​​删除它.

根据这里的帮助:http://developer.github.com/v3/repos/#delete-a-repository我必须发送这样的DELETE请求:

curl -X DELETE -H 'Authorization: token xxx' https://api.github.com/repos/:owner/:repo
Run Code Online (Sandbox Code Playgroud)

帮助没有指定,我不确定它们是什么意思:所有者和:repo - 这些是名称还是ID,但我尝试了几种名称和ID,但没有成功.我收到的回复是:

404 Not Found
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Iva*_*zak 22

如果你创建了您要使用通过令牌应用程序页面,则此标记将具有以下范围:user,public_repo,repo,gist.您可以通过使用该令牌发出API请求并查看响应HTTP标头来验证这一点:

curl -v -H 'Authorization: token xxx' https://api.github.com

查找X-OAuth-Scopes将包含范围列表的响应标头:

X-OAuth-Scopes: user, public_repo, repo, gist

但是,要删除存储库,令牌需要具有delete_repo范围.

因此,您需要一个与您拥有的范围不同的令牌.您可以使用Authorizations API创建此类令牌:

curl -v -u username -X POST https://api.github.com/authorizations -d '{"scopes":["delete_repo"], "note":"token with delete repo scope"}'

这将返回一个带有新令牌的JSON文档,您应该可以使用它来删除存储库:

{
  "id": XXXXX,
  "url": "https://api.github.com/authorizations/XXXXX",
  "app": {
    "name": "GitHub API",
    "url": "http://developer.github.com/v3/oauth/#oauth-authorizations-api",
    "client_id": "00000000000000000000"
  },
  "token": "XXXXXX",
  "note": "token with delete repo scope",
  "note_url": null,
  "created_at": "2013-10-11T20:34:49Z",
  "updated_at": "2013-10-11T20:34:49Z",
  "scopes": [
    "delete_repo"
  ]
}
Run Code Online (Sandbox Code Playgroud)

当然,在以这种方式创建令牌时,您可以要求多个范围,而不仅仅是delete_repo范围.

另外,作为附注,当您没有正确的授权时,API返回404错误的原因是为了防止信息泄漏.

  • Github网站用户界面现在提供了一种创建具有多个范围的令牌的方法.如果@Ivan Zuzak可以请更新他的答案以包括如何从命令行创建多个范围的当前示例,那将非常感激.我尝试使用`curl -v -u username -X POST https://api.github.com/authorizations -d'{"scopes":["delete_repo"]}'`不起作用 - 也许是因为API自原帖以来发生了变化. (2认同)
  • `//owner /:repo`的原始海报示例不正确 - 冒号需要删除 - 这是在创建包含`delete_repo`授权的令牌后的当前示例:`curl -X DELETE -H'授权:令牌xxx'https:// api.github.com/repos/USERNAME/NAME-OF-REPO` (2认同)

Ale*_*ory 10

删除存储库

curl -X DELETE -H 'Authorization: token {access token goes here}' https://api.github.com/repos/{yourUsername}/{name of repo} 替换里面的花括号和文本.

显示标题

curl -I https://api.github.com-I方法仅获取HTTP标头.

创建存储库

curl -u yourUsername -X POST https://api.github.com/user/repos -d '{"name":"nameOfRepo"}'