在Nodejs Express App Route中不起作用

问题描述

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...