【问题标题】:Why does my github hook test return a 422 Unprocessable Entity?为什么我的 github 钩子测试返回 422 Unprocessable Entity?
【发布时间】:2021-03-03 00:34:38
【问题描述】:

在我的网站上,我尝试实施一种方法来测试用户的 Github webhook 是否设置正确。但是,当我发送 POST 请求来测试挂钩时,它会返回 422 错误。我不确定为什么会出现这种情况,因为我使用的 POST 函数只是从我的所有其他 POST/GET 函数复制粘贴到 Github。下面我已经展示了相关代码。

我的 getHook 函数确实有效,并返回用户拥有的钩子列表。

const [ hookIds, setHookIds] = useState([]);

    const handleGet = () => {
        getHook(token, project[0], project[1]).then((m) => {
            console.log(m);
            setHookIds(m);
        });
    }

    const handleTest = () => {
        for (var i = 0; i < hookIds.length; i ++) {
            testHook(token, project[0], project[1], hookIds[i]['id']).then((m) => {
                console.log(m);
            });
        }
    }


export var getHook = async (access_token, name, creator) => {
    console.log("get hooks for user: " + creator + " and repo: " + name)
    return axios.get("https://api.github.com/repos/" + creator + "/" + name + "/hooks",  
        {
            headers: {
            'Accept': 'application/vnd.github.v3+json',
            'Authorization': 'token ' + access_token
            }
        })
    .then(response => {
        console.log("axios gets: " + response.data)
        return response.data;
    })
}

export var testHook = async (access_token, name, creator, hookid) => {
    console.log("test hook for user: " + creator + " and repo: " + name + "and hook id: " + hookid)
    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;
    })
}

【问题讨论】:

    标签: reactjs axios github-api


    【解决方案1】:

    在axios调用上添加catch块

    export var testHook = async (access_token, name, creator, hookid) => {
        console.log("test hook for user: " + creator + " and repo: " + name + "and hook id: " + hookid)
        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(err => {
        console.log(err.response.data)
    })
    
    }
    

    更多详情,check this

    【讨论】:

    • "无效请求。\n\n\"headers\" 不是允许的键。"是 err.response.data 显示的内容。
    • 那我猜问题出在这个'Accept':'application/vnd.github.v3+json',
    • 尝试将其更改为 'Accept': 'application/json',
    • 它给出了同样的错误。响应负载是这样的: {"headers":{"Accept":"application/json","Authorization":"token "}}
    猜你喜欢
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 2016-05-03
    • 2022-08-21
    • 2016-11-09
    相关资源
    最近更新 更多