Я пытаюсь подключиться к API GitHub с помощью JavaScript. У меня есть общая функция github, которая выполняет вызов github uri.
function githubRequest(endpoint, method, body) {
// console.log(github_token);
var baseUri = "https://api.github.com";
var fullUri = baseUri + endpoint; // endpoint is like /repos/username/repo/contents/path
// set up the request
$.ajax({
url: fullUri,
type: method,
beforeSend: function(request) {
request.setRequestHeader("Authorization", "Bearer " + github_token);
request.setRequestHeader("Content-Type", "application/json; charset=UTF-8");
},
data: body,
success: function(data) {
console.log("SUCCESS");
alert("Filed added");
},
error: function(data) {
console.log("ERROR");
alert("Something went wrong ... check console");
}
});
}
github_token
определено в другом файле.
Сейчас я тестирую это, используя метод PUT
, и пытаюсь создать файл в моем репо.
Более подробная информация здесь в разделе «Создать файл»: https://developer.github.com/v3/repos/contents/
Вот тот body
, который я отправляю.
{
"message": "Added files",
"committer": {
"name": name,
"email": email
},
"content": base_64_content
}
Тогда я вызываю свою функцию. Я пытаюсь загрузить файл README.md
в качестве примера.
В моей консоли для chrome я вижу два запроса (я предполагаю, что один - предполетный, а другой - реальный). Предполетный полет успешен, второй - нет.
По какой-то причине во втором запросе полезная нагрузка запроса выглядит следующим образом:
message=Added+files&committer%5Bname%5D=John+Doe&committer%5Bemail%5D=johndoe%40gmail.com&content=base64Content%3D
, где base64Content
- фактическое содержание base 64.
У меня есть два вопроса.
Во-первых, если предварительный запрос был успешным, почему этот запрос не прошел?
Во-вторых, почему это отправка как не JSON. Github отвечает
documentation_url:"https://developer.github.com/v3/repos/contents/#update-a-file"
message:"Problems parsing JSON"