gpt4 book ai didi

javascript - 如何在express中实现DRY路由器

转载 作者:行者123 更新时间:2023-12-03 06:02:48 25 4
gpt4 key购买 nike

我正在构建一个具有基本 CRUD 操作的网络形式的 Web 应用程序。我正在分割我的路由器文件,因为它们变得相当大。

我有一个“操作”路线,可以执行诸如选择要查看的个人帖子、对帖子进行投票、查看个人资料和赞扬用户等操作。我似乎找不到一种方法来允许我将这些“操作”路由拆分为单独的文件,然后根据需要在主路由中使用它们。

//index.js file in routes folder 
var express = require('express');
var router = express.Router();

//main route
router.route('/feed')
.get(function(req, res, next){
//some code here
}

//actions.js file in routes folder
var express = require('express');
var router = express.Router();

//vote route
router.route('/vote/:id')
.post(function(req, res, next){
//some code here
}

//item route
router.route('/item/:id')
.get(function(req, res, next){
//some code here
}

我希望能够使用提要路由(和其他路由)内的操作路由,这样我就可以做类似的事情

POST /feed/vote/postid12356
GET /feed/item/itemid123456

或者甚至在另一个名为“private-feed”的路由中使用与操作路由相同的操作

POST /private-feed/vote/postid12356
GET /private-feed/item/itemid123456

无需在许多 route 重复这些操作。

有没有什么办法可以做到这一点?

最佳答案

您可以将路由处理程序提取到一个单独的文件中,我们将它们称为 Controller ,然后重用某些路由中的逻辑:

//controllers/action.js
module.exports = {
get: (req, res, next) => {
//your post logic
}
}

///routes/item.js

const ActionController = require("../controllers/action");
router.route('/item/:id').get(ActionController.get);
module.exports = router;

关于javascript - 如何在express中实现DRY路由器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39685174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com