React Axios:在Delete方法中传递数据

3
我希望能更好地了解在Axios Delete请求中传递数据。在后端中,为了删除用户,您需要提供特定的密码。因此,在前端中,我需要在"axios.delete"方法中传递输入的密码。
但是,使用我的第一种方法时(即与使用axios.post或axios.patch方法更新数据的方式相同),我总是收到403 forbidden error错误。
export function deleteUser(id, password){
    const csrfToken = getCookie('csrftoken');
    return axios.delete('/users/' + id + '/', {password: password}, {headers: {'X-CSRFToken': csrfToken}})
}

幸运的是,我最终通过以下方法修复了该错误:
export function deleteUser(id, password){
    const csrfToken = getCookie('csrftoken');
    return axios.delete('/users/' + id + '/', {headers: {'X-CSRFToken': csrfToken}, data: {password: password}})
}

然而,我并不清楚为什么 axios.delete('/users/' + id + '/', {headers: {'X-CSRFToken': csrfToken}, data: {password: password}}) 可以正常工作,但是 axios.delete('/users/' + id +/', {password: password}, {headers: {'X-CSRFToken': csrfToken}}) 没有正确传递密码数据(导致 403 错误),而这种方法对于 axios.postaxios.patch 仍然有效。有人可以向我解释一下这个问题吗?
1个回答

2

.delete不支持像.post.patch那样将data参数作为第二个参数。就是这样。至于为什么,根据HTTP规范,POST、PATCH和PUT方法需要请求体(body),而DELETE则是可选的。这很可能是axios作者设计他们API的原因。


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