我正在尝试通过API更新我的一个回购文件中的文件。
这是我对该文件的了解(效果很好):
curl -XGET 'https://git.fake.local/api/v3/repos/jsmith/repo_version/contents/version.html?ref=gh-pages'
{
"name": "version.html",
"path": "version.html",
"sha": "b1b716105590454bfc4c0247f193a04088f39c7f",
"size": 5,
"url": "https://git.fake.local/api/v3/repos/jsmith/post_version/contents/version.html?ref=gh-pages",
"html_url": "https://git.fake.local/jsmith/post_version/blob/gh-pages/version.html",
"git_url": "https://git.fake.local/api/v3/repos/jsmith/post_version/git/blobs/b1b716105590454bfc4c0247f193a04088f39c7f",
"type": "file",
"content": "aW5pdAo=\n",
"encoding": "base64",
"_links": {
...
}
}
这是我尝试通过PUT更新该文件:
curl -XPUT 'https://git.fake.local/api/v3/repos/jsmith/repo_version/contents/version.html?ref=gh-pages' -d '{
"message": "update from api",
"committer": {
"name": "Joe Smith",
"email": "jsmith@fake.com"
},
"content": "bXkgdXBkYXRlZCBmaWxlIGNvbnRlbnRz",
"sha": "b1b716105590454bfc4c0247f193a04088f39c7f"
}'
结果:
{
"message": "Not Found"
}
答案 0 :(得分:5)
好的......我想我明白了。
来自github doco:
<强>验证强>
通过GitHub API v3进行身份验证有三种方法。要求 需要身份验证的将返回
404 Not Found
403 Forbidden
,在某些地方。这是为了防止 私人存储库意外泄露给未经授权的用户。
如果Auth是一个问题,我期待403,但他们扔了404,所以基本上我可能需要确保我正确认证,一切都会好的。
解决: 我创建了一个个人oauth令牌(在设置/应用程序下)并在标题中添加curl请求,这一切都很有效。
curl -XPUT -H "Authorization: token MYSECRETTOKEN"