Javascript 在Express JS中为一个文件中的路由添加前缀
我目前正在重构我的代码,我希望有一种更有效的方法使我的代码看起来更漂亮。以下是我目前拥有的:Javascript 在Express JS中为一个文件中的路由添加前缀,javascript,node.js,express,Javascript,Node.js,Express,我目前正在重构我的代码,我希望有一种更有效的方法使我的代码看起来更漂亮。以下是我目前拥有的: router.route('/api/merchant/') .get(controllerFunction) .post(controllerFunction); router.route('/api/user/') .get(controllerFunction) .post(controllerFunction); router.
router.route('/api/merchant/')
.get(controllerFunction)
.post(controllerFunction);
router.route('/api/user/')
.get(controllerFunction)
.post(controllerFunction);
router.route('/admin/user/')
.get(controllerFunction)
.post(controllerFunction);
router.route('/admin/place/')
.get(controllerFunction)
.post(controllerFunction);
您可以看到,我将“api”和“admin”作为某些路由的前缀
我可以将API路由分离到另一个文件中,并让“app.use”中间件适当地附加它们,但我想知道如何绕过这个问题,将这些路由放在一个文件中,主要问题是文件末尾:
module.exports=路由器
这只允许我对所有路由使用一个前缀。您可以将整个路由器装载到一个路径上。如果您执行以下操作:
router.get('/:id',someFn)代码>
然后在其他地方你可以做:
app.use('/api',路由器)代码>
路由“/api/:id/”将解析为someFn处理程序
更新
我不确定我是否完全理解您的担忧,坦率地说,将所有路由放在一个文件中会使文件的长度超出我的承受范围,但如果您真的只想安装一个路由器,您可以在路由文件中执行与我描述的类似的操作
在这种情况下,您仍然可以创建多个路由器,但不必将它们导出并安装到应用程序上,您可以这样做:
const adminRouter = express.Router();
// configure the admin routes as I described
const apiRouter = express.Router();
// configure API routes
const main = express.Router();
main.use('/admin', adminRouter);
main.use('/api', apiRouter);
module.exports = main;
您可以在块代码下面继续,但我建议您将controler函数写入另一个文件,每次一次
var router = express.Router();
var useApi = router.route('/user')
.get(controllerFunction)
.post(controllerFunction);
var useAdmin = router.route('/user')
.get(controllerFunction)
.post(controllerFunction);
app.use('/api', userApi);
app.use('/admin', userAdmin);
如果您的代码已经通过了测试和functional.Neat,那么这可能是一个很好的候选。我不知道,我只想安装路由器的一部分。一个用于“api”,另一个用于“管理”路由器,目的是隔离功能部分。要想做你想做的事,只需制作两个路由器并将它们安装在不同的路径上即可。我希望我不能将它们隔离作为解决方案。谢谢你的回答。好吧,将它们作为一个文件保留是一种选择,请参阅MyBuUpdate。不过,出于长期维护的原因,人们往往不喜欢这样。Ymmv