You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何测试GitHub Webhook时返回422 Unprocessable Entity错误?

解决GitHub Webhook测试返回422错误的问题

我来帮你定位这个问题——你遇到的422 Unprocessable Entity错误,核心原因是testHook函数里的Axios POST调用参数格式不正确,咱们一步步解决:

错误根源

Axios的post方法签名是:

axios.post(url[, data[, config]])

而你的testHook函数里,把请求头配置直接放在了第二个参数的位置(这个位置本该是请求体data),导致GitHub API收到了不符合要求的请求内容,进而返回422错误。对比正常工作的getHook就能发现,get方法的参数是axios.get(url[, config]),请求头放在config里是正确的,但POST方法的参数结构不一样。

修正后的代码

把testHook里的Axios调用调整为正确的参数顺序,同时因为测试Webhook的POST请求不需要请求体,第二个参数传空对象{}即可:

export var testHook = async (access_token, name, creator, hookid) => {
  console.log("test hook for user: " + creator + " and repo: " + name + " and hook id: " + hookid)
  // 修正:将headers移到第三个参数的config中,第二个参数传空请求体占位
  return axios.post(
    "https://api.github.com/repos/" + creator + "/" + name + "/hooks/" + hookid + "/tests",
    {}, 
    {
      headers: {
        'Accept': 'application/vnd.github.v3+json',
        'Authorization': 'token ' + access_token
      }
    }
  )
  .then(response => {
    console.log("axios gets: " + response.data)
    return response.data;
  })
  .catch(error => {
    // 建议加上错误捕获,方便排查后续问题
    console.error("测试钩子失败:", error.response?.data || error.message);
    throw error;
  })
}

额外排查建议

  • 确认你的access_token拥有admin:repo_hook权限(GitHub Webhook相关操作需要这个权限)
  • 检查hookIds[i]['id']是否正确获取到了钩子的ID(可以在handleTest里打印hookid确认)
  • 保留catch块捕获错误,能更直观看到GitHub返回的具体错误信息,帮助进一步定位问题

内容的提问来源于stack exchange,提问作者Adam Lau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 21:07:56