我尝试使用Github v3 api更新文件。我能找到的大多数文档都是基于较旧的API。我想利用:https://developer.github.com/v3/repos/contents/#update-a-file
我首先使用以下方法获取文件:
$.ajax({
url: "https://api.github.com/repos/"+owner+"/"+repo+"/contents/"+path,
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "user" + btoa(owner+":"+passwrd));
},
type: 'GET',
dataType: 'json',
contentType: 'application/json',
success: function (data) {
var jsonFile = data.content;
sha = data.sha;
var decodedJson = atob(jsonFile);
var parsedDecodedJson = JSON.parse(decodedJson);
parseData(parsedDecodedJson);
},
error: function(error){
alert.addClass('alert-danger').removeClass('hidden').html('Something went wrong:'+error.responseText);
}
});
完美无缺。
编辑文件后,我尝试更新文件。 在我的提交中,我使用jQuery发布以下内容:
var postData = {
"message": "Update",
"content": btoa(obj),
"sha": sha,
"branch":"gh-pages"
};
$.ajax({
url: "https://api.github.com/repos/"+owner+"/"+repo+"/contents/"+path,
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "user" + btoa(owner+":"+passwrd));
},
type: 'PUT',
data: postData,
dataType: 'json',
contentType: 'application/json',
success: function (data) {
console.log("Success!!!", data);
},
error: function(error){
console.log("Cannot get data", error);
}
});
所有变量都包含预期值。无论如何,我一直得到404。 我知道API经常返回404而不是像403这样的东西:https://developer.github.com/v3/#authentication但是在我看来它几乎不可能实现调试。我不知道我在这里做错了什么。谢谢!
答案 0 :(得分:0)
我能做到的唯一方法就是完成整个往返旅程。 我使用了javascript Github API wrapper
幸运的是,我找到了this article,其中大部分工作已经完成。告诉Illia Kolodiazhnyi。
最后。我最终得到了这个:
用法:
var api = new GithubAPI({ token: token});
api.setRepo(owner, repo);
api.setBranch(branch).then(function () {
return api.pushFiles(
'CMS Update',
[
{
content: JsonData,
path: path
}
]
);
}).then(function () {
console.log('Files committed!');
});