提问者:小点点

在Nodejs Express应用程序中路由不工作


我有一个app.js文件-

const express = require('express');
const app = express();
const port = process.env.PORT || 8080;

const userRoute = require('./routes/user.route');
app.use('/user', userRoute);

app.listen(port, () => {
        console.log(chalk.blue(`Express app listening at http://localhost:${port}`));
});

我的路线文件是-

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

const userController = require('../controllers/user.controller');

router.post('/:id', userController.userDetails);
router.post('/toggleActive', userController.toggleStatus);

module.exports = router;

我无法访问“/toggleactive”路径。

但如果我把路线文件定义为-

router.post('/toggleActive', userController.toggleStatus);
router.post('/:id', userController.userDetails);

module.exports = router;

那么一切都很正常。


共2个答案

匿名用户

如果您像这样定义路由

router.post('/:id', userController.userDetails);
router.post('/toggleActive', userController.toggleStatus);

则服务器将捕获与POST一起发送到/user的所有内容,因为:id是一个变量。它可能是一个字符串“toggleactive”。你可以这样做

router.post('/:id/toggleActive', userController.toggleStatus);
router.post('/:id', userController.userDetails);

匿名用户

您的url

/user/toogleActive
/toogleActive

null