可管理的嵌套路由...
我想要一个在 express 4 中以非常易于管理的方式执行嵌套路由的特定示例,这是“express 中的嵌套路由”的最佳搜索结果。例如,这是一个 API,其中包含许多需要分解的路由。
./index.js:
var app = require('express')();
// anything beginning with "/api" will go into this
app.use('/api', require('./routes/api'));
app.listen(3000);
./routes/api/index.js:
var router = require('express').Router();
// split up route handling
router.use('/products', require('./products'));
router.use('/categories', require('./categories'));
// etc.
module.exports = router;
./routes/api/products.js:
var router = require('express').Router();
// api/products
router.get('/', function(req, res) {
res.json({ products: [] });
});
// api/products/:id
router.get('/:id', function(req, res) {
res.json({ id: req.params.id });
});
module.exports = router;
文件夹结构中的嵌套示例
我注意到一些关于“嵌套文件夹结构”的评论。这暗示了这一点,但并不明显,所以我添加了下面的部分。这是routes 嵌套文件夹结构的具体示例。
index.js
/api
index.js
/admin
index.js
/users
index.js
list.js
/permissions
index.js
list.js
这是节点如何工作的更一般的例子。如果您在文件夹中使用“index.js”类似于“index.html”在网页中为目录默认工作的方式,这将很容易基于递归扩展您的组织,而无需更改您的代码入口点。“index.js”是在目录中使用require时访问的默认文档。
index.js 的内容
const express = require('express');
const router = express.Router();
router.use('/api', require('./api'));
module.exports = router;
/api/index.js 的内容
const express = require('express');
const router = express.Router();
router.use('/admin', require('./admin'));
module.exports = router;
/api/admin/index.js 的内容
const express = require('express');
const router = express.Router();
router.use('/users', require('./users'));
router.use('/permissions', require('./permissions'));
module.exports = router;
/api/admin/users/index.js 的内容
const express = require('express');
const router = express.Router();
router.get('/', require('./list'));
module.exports = router;
这里可能存在一些 DRY 问题,但它确实很适合封装关注点。
仅供参考,最近我进入了 actionhero 并发现它具有带套接字和任务的全功能,更像是一个真正的多合一框架,颠覆了 REST 范式。你应该检查一下,而不是用快递裸体。