POST http://localhost:3001/createPost 404 (Not Found) EXPRESS & REACT

Posted

技术标签:

【中文标题】POST http://localhost:3001/createPost 404 (Not Found) EXPRESS & REACT【英文标题】: 【发布时间】:2021-12-17 05:20:29 【问题描述】:

我正在尝试通过 Axios 将数据从使用 React 创建的页面传递到由 Express 服务器管理的 Mongo 数据库。保存到数据库适用于用户,但对于帖子我收到以下错误消息:

POST http://localhost:3001/createPost 404(未找到)

未捕获(承诺中)错误:请求失败,状态码为 404 在 createError (createError.js:16) 定居时 (settle.js:17) 在 XMLHttpRequest.onloadend (xhr.js:66)

谁能帮帮我?下面我附上代码。

App.jsx

function App()
  return (
      <Router>
        <Route path="/" exact>
          <Home />
        </Route>

        <Route path="/new">
          <NewPostFromHome />
        </Route>
    </Router>
  );

index.js(服务器)

const app = express();
app.use(cors());
app.use(express.json());

//Database connection
mongoose.connect("mongodb://localhost:27017/codingWaifus", useNewUrlParser: true, function(err, db)
  if(err)
    console.log(err);
  
  else
    console.log("Connected to "+mongoose.connection.name+" on Port: "+mongoose.connection.port);
  
);
mongoose.connection.on('error', console.error.bind(console, 'MongoDB connection error:'));

app.use("/", require("./routes/userRoute"));
app.use("/new", require("./routes/postRoute"));

app.listen(3001, () => 
  console.log("running on port 3001");
);

postModel.js

const mongoose = require("mongoose");

const postsSchema = 
  title: String,
  body: String


const Post = mongoose.model("Post", postsSchema);

module.exports = Post;

postRoute.js

const express = require("express");
const router = express.Router();
const Post = require("../models/postModel");

router.route("/createPost").post((req, res) => 
  const title=req.body.title;
  const body=req.body.body;
  const newPost = new Post(
    title,
    body
  );
  newPost.save();
)

module.exports = router;

【问题讨论】:

app.use("/new", require("./routes/postRoute")); 注意postRoute 路由器是如何添加到/new 路径而不是/ 对 Postman 的 POST 请求使用 URL http: //localhost:3001/new/createPost 如果我在 Axios.post 中使用“http://localhost:3001/new/createPost”作为目的地,它可以工作。你知道它为什么会这样吗?有什么方法可以使用 http://localhost:3001/createPost 作为路径使其工作? 【参考方案1】:

看来你的问题是 postRoute 在下面

app.use("/new", require("./routes/postRoute"));

在这里你可以看到你使用了“/new”路由,所以最终的 Url 是

http://localhost:3001/new/createPost

如果你使用这个 URL,它应该可以正常工作

或者您也可以删除“新”字以仅保留此:

app.use("/", require("./routes/postRoute"));

有关此的更多详细信息,请在 express 中查看此中间件文档:https://expressjs.com/en/guide/using-middleware.html

【讨论】:

以上是关于POST http://localhost:3001/createPost 404 (Not Found) EXPRESS & REACT的主要内容,如果未能解决你的问题,请参考以下文章

在前端开发中mock后端数据

小猪POST+乌鸦POST+js+商梦POST+小霖POST+骚华破解培训教程集合(资源共享吧首发)

web.com/post/post-title 重定向到 web.com/post-title

gin-post数据

易语言 如何提交post数据。

post传中文上限