在 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 使用的第一个匹配策略。
我有一个 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 使用的第一个匹配策略。