Express MVC模式下POST路由报错Cannot POST /validateUser求助
Express MVC登录功能POST请求路由失效排查
问题说明
使用Express框架的MVC架构开发登录功能时,提交包含username和password的POST表单至/validateUser路径,出现「Cannot POST /validateUser」错误。直接在app.use中编写处理函数可正常获取表单数据,但通过引入validationRoute路由文件的方式无法生效,请求无法到达控制器,需排查问题。
代码片段
登录表单代码
<!DOCTYPE html> <html> <head> <title>Login Form</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div class="contentDiv"> <form action="/validateUser" method="post"> <!-- user input--> Username:<br> <input type="text" name="username" placeholder="Username" required><br><br> Password:<br> <input type="password" name="password" placeholder="Password" required><br><br> <input type="submit" value="login"> </form> </div> </body> </html>
app.js代码
const express = require('express'), app = express(), app.set('view engine', 'ejs') /*For getting form input*/ const bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({ extended: true })); const validationRoute = require('./routes/validationRoute') /* Routes */ //app.post('/validateUser', validationRoute) app.use('/validateUser', validationRoute) const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Listening on Port: ${PORT}`); })
validationRoute.js代码
const express = require('express'), router = express.Router(), validationCon = require('../controllers/validationController') router.get('/', validationCon.validateUser); /* router.get('/', (req, res) => { console.log("URL from validate: "+req.url) }) */ module.exports = router;
validationController.js代码
const { logic } = require("../dbLogic"); module.exports = { validateUser: async (req, res) => { const uName = req.uName, pwd = req.pwd; const success = true//await logic.validateUser(uName, pwd); if(success) { //res.status(201).send('Login accepted'); res.render('../views/pages/secret'); } else res.status(400).send("Bad confidentials"); } }
补充信息
直接使用app.use('/validateUser', function(req,res){...})可以正常获取username和password,但通过路由文件的方式无法生效,希望实现通过路由传递到控制器进行验证的MVC模式。
内容的提问来源于stack exchange,提问作者user1960836
相关产品推荐
相关产品推荐

