重置密码功能报404错误,请求/api/v1/auth/forgot-password未找到
重置密码接口404错误排查方案
1. 后端路由配置验证
- 确认路由挂载路径匹配
检查server.js中是否有类似app.use('/api/v1/auth', authRoutes)的代码,确保路由前缀和请求路径完全对应 - 核对路由定义细节
路由文件中forgot-password的定义必须是router.post('/forgot-password', forgotPasswordController),禁止末尾多带斜杠(比如/forgot-password/),路径大小写要和请求URL严格一致 - 验证路由导入导出正确性
确认路由文件用module.exports = router导出,且server.js中的导入语句无拼写错误
2. 前端请求配置检查
- 校验请求URL拼写
确保Axios请求的URL是http://localhost:3000/api/v1/auth/forgot-password,检查大小写、斜杠、前缀是否和后端完全匹配 - 确认请求方法为POST
必须是axios.post(...)调用,不能误用GET或其他方法 - 检查请求头格式
若后端要求JSON格式,确保请求头包含Content-Type: application/json(Axios默认会自动处理,但需确认未被手动修改)
3. 控制器与路由关联检查
- 确认控制器函数导入正确
路由文件中需正确导入控制器函数,比如const { forgotPassword } = require('../controllers/authController'),函数名要和控制器中的导出完全一致 - 验证控制器导出有效性
控制器文件中必须有exports.forgotPassword = async (req, res) => { ... }这类导出语句,确保函数存在且可被路由调用
4. 服务器运行状态验证
- 确认后端服务端口为3000
查看server.js的端口配置是否为const PORT = 3000,启动后控制台需显示Server running on port 3000 - 用Postman/cURL直接测试接口
发送POST请求到http://localhost:3000/api/v1/auth/forgot-password,若仍返回404,问题出在后端路由;若能正常响应,问题则在前端请求代码
内容的提问来源于stack exchange,提问作者Ibrahim zulfiqar
相关产品推荐
相关产品推荐

