问题描述
我有一个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;
然后一切正常。
解决方法
如果您定义这样的路线
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);
,
您的网址
/user/toogleActive将通过路径与路径进行匹配。这意味着定义的第一个路由将与网址匹配,该网址将提取toogleActive作为参数。但是,要更改此设置,应将路由
/toogleActive放在a之前,以实现express使用的第一个匹配策略。