如何使用AJAX在GitHub web api上的存储库上创建webhook?

时间:2017-02-12 19:02:55

标签: api github webhooks http-status-code-400

我正在GitHub api中试验Webhooks。我有一个人工作,就像进入我的存储库并单击设置并启用Web挂钩一样。但现在我想在AJAX中这样做,我遇到了问题。每当我尝试向网络api发送POST时,它都会失败并返回400(错误请求)。我不确定我的代码在哪里出错。

function createWebHooksOnRepos(token){
const webhookURL = "https://api.github.com/repos/DanoBuck/AlgorithmsAndDataStructures/hooks";

const json = {
    "name": "WebHook",
    "active": true,
    "events": [
        "issue_comment",
        "issues"
    ],
    "config": {
        "url": "http://39a40427.ngrok.io/api/webhooks/incoming/github",
        "content_type": "json"
        }
};
$.ajax({
    headers: {
        "Authorization": "Token " + token
    },
    url: webhookURL,
    data: json,
    type: "POST",
    dataType: "json",
    success: function(data){
        console.log(data);
    }
});

}

谢谢

1 个答案:

答案 0 :(得分:0)

来自github Webhook API doc

  

name - string - 必需。使用“web”作为webhook或使用有效的名称   服务。 (有关有效服务名称的列表,请参阅/hooks。)

因此,在您的情况下,只需将Webhook重命名为web

const json = {
    "name": "web",
    "active": true,
    "events": [
        "issue_comment",
        "issues"
    ],
    "config": {
        "url": "http://39a40427.ngrok.io/api/webhooks/incoming/github",
        "content_type": "json"
        }
};

发送前还要JSON.stringify您的数据:

$.ajax({
    headers: {
        "Authorization": "Token " + token
    },
    url: webhookURL,
    data: JSON.stringify(json),
    type: "POST",
    dataType: "json",
    success: function(data) {
        console.log(data);
    }
});