VueJS,expressJS,axios删除错误:请求失败,状态代码为404

643ylb08  于 2022-11-05  发布在  iOS
关注(0)|答案(1)|浏览(126)

我正在学习制作MEVN堆栈应用程序的基础知识,在axiosDELETE请求方面遇到一些问题。
问题是,当我用axios发出DELETE请求时,它给出的是Request failed with status code 404

请求示例DELETE http://localhost:9999/item/123 ;
检查器中出现完全错误

XHR DELETE http://localhost:9999/ [HTTP/1.1 404 Not Found 5ms]

Object { message: "Request failed with status code 404", 
         name: "AxiosError", 
         code:         "ERR_BAD_REQUEST", 
         config: {…}, 
         request: XMLHttpRequest, 
         response: {…}, stack: "" }

(* 注意,在错误中我没有item/123部分,我不知道为什么 *)
我知道,错误404意味着文件/文档没有找到,在大多数情况下,问题是不正确的路径。看来,我还没有最后一个。

到代码
vue js;文件MEVN_testing/src/App.vue,带有删除请求的部分:

DeleteItem(item) {
  axios
    .delete(`http://localhost:9999/item/${item.id}`)
    .then((res) => {
      console.log("DELETE request done...", res.status);
      this.UpdateList();
    })
    .catch((err) => console.log(err));

这里我想用URL模板http://localhost:9999/item/item_id向服务器发出DELETE请求

快递js;文件MEVN_testing/server/src/routes/routes.js,删除请求处理程序:

const express = require("express");
const router = express.Router();

const itemModel = require("../models/itemModel.js");

...

router.delete("/:id", (req, res) => {
    itemModel.findOneAndDelete({ id: req.params.id });
    res.redirect("/");
});

...

module.exports = router;

这里我只想从mongodb数据库中删除具有给定 id 的项目。

快递js;文件MEVN_testing/server/src/index.js,正在创建应用程序:

const path = require("path");
const express = require("express");

const PORT = 9999;
url = `http://localhost:${PORT}/`;

const urlencodedParser = express.urlencoded({ extended: false });

const app = express();

app.use(express.json());
app.use(urlencodedParser);

// Including build vue app as static files to route /
app.use("/", express.static(path.join(__dirname, "..", "..", "dist")));
// using routes and bind it to route /item
app.use("/item", require("./routes/routes.js"));

console.log(url);
app.listen(PORT);

在最后一个app.use("/item", require("./routes/routes.js"))中我“包括”了routes.js文件并定义了该路由的所有路径以/item地址开始。
什么会导致这个问题?谢谢。

brccelvz

brccelvz1#

问题是,我使用的是res.redirect("/")
(我想,在这种情况下,应用程序没有从服务器获得响应,这会导致404错误)

解决方案:

res.redirect("/")替换为res.send("some message")

相关问题