首页 > 解决方案 > 在 Nodejs Express App Route 中不起作用

问题描述

我有一个 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;

然后一切正常。

标签: javascriptnode.jsexpressexpress-router

解决方案


如果你定义这样的路线

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);

推荐阅读