我在ReactJS中编程时使用Axios,我假装向服务器发送DELETE请求。
要做到这一点,我需要头文件:
headers: {
'Authorization': ...
}
而身体是由
var payload = {
"username": ..
}
我一直在网上搜索,只发现DELETE方法需要一个“参数”,不接受“数据”。
我一直想这样发送
axios.delete(URL, payload, header);
甚至
axios.delete(URL, {params: payload}, header);
但似乎什么都不管用……
有人能告诉我,如果这是可能的(我假设是)发送一个删除请求与头部和主体,以及如何这样做?
与axios无关,但可能帮助人们解决他们正在寻找的问题。PHP在执行delete调用时不解析post数据。Axios delete可以发送带有请求的主体内容。
例子:
//post example
let url = 'http://local.test/test/test.php';
let formData = new FormData();
formData.append('asdf', 'asdf');
formData.append('test', 'test');
axios({
url: url,
method: 'post',
data: formData,
}).then(function (response) {
console.log(response);
})
result: $_POST Array
(
[asdf] => asdf
[test] => test
)
// delete example
axios({
url: url,
method: 'delete',
data: formData,
}).then(function (response) {
console.log(response);
})
result: $_POST Array
(
)
要在PHP中获得删除调用的post数据,请使用:
file_get_contents('php://input');
下面是使用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键来正确设置查询参数
删除带有主体的请求需要将其设置在数据键下