在 Nodejs Express App Route 中不起作用

In Nodejs Express App Route is not working

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

那么一切正常。

如果你这样定义路由

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
会被路由与路径匹配。这意味着定义的第一条路线将与 url 匹配,后者将提取 toogleActive 作为参数。然而,要改变这一点,路由
/toogleActive
应该放在前面作为 a 以实现 express 使用的第一个匹配策略。