我有一个app.js文件-
var data = [
'FooBar\nBarFoo\nFoodBar\n'
]
let headers = {
BarOfFoo: "",
FoodOfBar: "",
BarBarOfFoo: "",
};
let result = Array.of(Object.fromEntries(data.reduce((acc,curr) => {
curr.trim().split("\n").forEach((v, i) => {acc[i]=[acc[i], v]})
return acc;
},Object.keys(headers))))
console.log(result)
我的路线文件是-
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}`));
});
我无法到达“ / toggleActive”路径。
但是如果我将路由文件定义为-
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;
然后一切正常。
答案 0 :(得分: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);
答案 1 :(得分:1)
您的网址
/user/toogleActive将通过路径与路径进行匹配。这意味着定义的第一个路由将与网址匹配,该网址将提取toogleActive作为参数。但是,要更改此设置,应将路由
/toogleActive放在a之前,以实现express使用的第一个匹配策略。