【发布时间】:2019-10-16 20:27:41
【问题描述】:
我正在尝试向我的 PHP/Codeigniter api 发送删除请求。从 NativeScript-Vue 前端发送。
async deleteBackedupImages(identifiers) {
console.log(identifiers);
try {
var { data } = await axios({
url: this.apiUrl + "/images?XDEBUG_SESSION_START=dsadsad",
method: "delete",
data:{
identifiers
},
headers: { "X-Requested-With": "XMLHttpRequest","Content-Type": "application/json" }
});
return data;
} catch (error) {
throw error;
}
}
在 PHP 方面,我有这个函数来处理 JSON 数据:
function getJSONData():stdClass{
try {
$ci =& get_instance();
$stream_clean = $ci->security->xss_clean($ci->input->raw_input_stream);
$request = json_decode($stream_clean);
return $request;
} catch (\Throwable $th) {
throw $th;
}
}
“标识符”只是一个字符串数组。
$stream_clean 变量显示为空字符串,而不是 JSON 字符串。
我不得不说这有点奇怪,Axios 文档声明如下:
//
data是要作为请求体发送的数据 //仅 适用于请求方法“PUT”、“POST”和“PATCH”
我在各种帖子中看到,数据对象可以实际上是通过删除请求发送的。
我的代码可能有什么问题?
【问题讨论】:
-
“我在各种帖子中看到,数据对象实际上可以通过删除请求发送。” - 专门指 Axios,或者仅仅是删除请求能有身体还是不能一般?您从文档中引用的内容可能只是表明 Axios 在指定
method: "delete"时不会发送正文,无论您是否提供data...... -
你知道你的代码有什么问题:你试图发送一个带有一个没有定义语义的正文的 DELETE 请求。即使 Axios 发送它,许多服务器实现也会忽略它。
-
帖子声称可以使用正文发送 Axios 删除请求。喜欢这个:stackoverflow.com/questions/51069552/… 还有这个:github.com/axios/axios/issues/897
-
那么也许服务器端部分不关心 DELETE 请求的主体。这是 CodeIgniter 吗?您是否研究过它是否以您想要的方式处理 DELETE 请求的主体?
-
04fs,我想过这个,但有趣的是,当使用 Postman 发送时,它可以 100% 工作:D 当然,“邮递员做了一些不同的事情”,但我不知道是什么。