我有一个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
/toogleActive
null