我在ReactJS中编程时使用Axios,我假装向服务器发送DELETE请求。
要做到这一点,我需要头文件:
headers: {
'Authorization': ...
}
而身体是由
var payload = {
"username": ..
}
我一直在网上搜索,只发现DELETE方法需要一个“参数”,不接受“数据”。
我一直想这样发送
axios.delete(URL, payload, header);
甚至
axios.delete(URL, {params: payload}, header);
但似乎什么都不管用……
有人能告诉我,如果这是可能的(我假设是)发送一个删除请求与头部和主体,以及如何这样做?
下面是使用axios发送各种http动词所需的格式的简要总结:
GET: Two ways
First method
axios.get('/user?ID=12345')
.then(function (response) {
// Do something
})
Second method
axios.get('/user', {
params: {
ID: 12345
}
})
.then(function (response) {
// Do something
})
The two above are equivalent. Observe the params keyword in the second method.
POST and PATCH
axios.post('any-url', payload).then(
// payload is the body of the request
// Do something
)
axios.patch('any-url', payload).then(
// payload is the body of the request
// Do something
)
DELETE
axios.delete('url', { data: payload }).then(
// Observe the data keyword this time. Very important
// payload is the request body
// Do something
)
关键要点
获取请求可选地需要一个params键来正确设置查询参数
删除带有主体的请求需要将其设置在数据键下
对于那些尝试了以上所有方法但仍然没有看到请求的有效负载的人-请确保您有:
"axios": "^0.21.1" (not 0.20.0)
那么,上面的解决方案就起作用了
axios.delete("URL", {
headers: {
Authorization: `Bearer ${token}`,
},
data: {
var1: "var1",
var2: "var2"
},
})
你可以访问有效载荷
req.body.var1, req.body.var2
问题在于:
https://github.com/axios/axios/issues/3335
Axios DELETE请求支持与POST请求类似的功能,但格式不同。
DELETE请求有效负载示例代码:
axios.delete(url, { data: { hello: "world" }, headers: { "Authorization": "Bearer_token_here" } });
POST请求有效负载示例代码:
axios.post(url, { hello: "world" }, { headers: { "Authorization": "Bearer_token_here" } });
注意{hello: "world"}以不同的方式配置,但都执行相同的功能。