如何使用AJAX在GitHub Web API上为存储库创建Webhook?

3

我正在尝试使用GitHub API中的Webhooks。我手动实现了其中一个,方法是进入我的存储库,点击设置,并启用Webhook。但现在我想在AJAX中执行此操作,但遇到了问题。每次我尝试发送POST到Web API时,都会失败并返回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);
    }
});

}

Thank you

1个回答

3

根据GitHub Webhook API文档

name - 字符串 - 必需。对于Webhook,请使用“web”,或者使用有效服务的名称(请参阅/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);
    }
});

仍然没有解决这个问题。仍然收到相同的响应:“无法加载资源:服务器响应状态为400(错误请求)”。谢谢你的帮助。 - DanoBuck
你忘记将数据转换为字符串了,我已经更新了我的帖子。 - Bertrand Martel
数据:JSON.stringify(json), - 这一行使它完美运行。非常感谢您的帮助。非常感激您的帮助。 - DanoBuck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接