MERN项目表单提交POST /posts出现404错误,求解决方案
问题原因与解决方案
核心问题
你的前端发送的是POST请求到/posts,但后端路由中没有配置对应这个路径的POST路由规则,反而错误地把创建接口设成了GET /posts/create,导致请求找不到对应处理逻辑,返回404。
修正步骤
1. 修正后端路由配置
打开后端routes/posts.js,将创建帖子的路由从GET方法改为POST,并把路径调整为根路径/:
import express from 'express'; import { getPosts, createPosts } from '../controllers/posts.js'; const router = express.Router(); router.get('/', getPosts); // 修改这行:把GET改为POST,路径从/create改为/ router.post('/', createPosts); export default router;
2. 确保控制器正确处理POST请求
确认controllers/posts.js中的createPosts函数能正确读取请求体并执行创建逻辑,示例代码如下:
// 请根据你的实际Mongoose模型调整 import Post from '../models/post.js'; export const createPosts = async (req, res) => { const postData = req.body; try { const newPost = await Post.create(postData); res.status(201).json(newPost); } catch (error) { res.status(409).json({ message: error.message }); } };
3. 验证生效
重启后端服务器使路由修改生效,此时前端发送的POST http://localhost:5000/posts请求会被后端正确捕获处理,404问题即可解决。
额外检查项
- 确认前端
api/index.js中的createPost函数确实使用axios.post(url, newPost)发送请求(你当前代码已符合要求) - 检查Mongoose模型定义是否正确,确保
create操作能正常写入数据库
内容的提问来源于stack exchange,提问作者FutureX
相关产品推荐
相关产品推荐

