本文将为您详细介绍本站关于子路由的详细指南,帮助您更好地理解和应用相关功能。
什么是子路由?
子路由是路由的一部分,它允许您将一个路由拆分成多个子路由,以便更细致地控制访问权限和功能。
子路由的用法
定义子路由:在主路由的基础上,添加子路由。
const express = require('express'); const router = express.Router(); // 定义子路由 router.get('/sub-route', (req, res) => { res.send('这是子路由的内容'); }); // 将子路由挂载到主路由 app.use('/main-route', router);
访问子路由:通过访问主路由的路径,并加上子路由的路径,来访问子路由。
GET /main-route/sub-route
使用中间件:您可以在子路由上使用中间件,以实现更细粒度的控制。
router.use('/sub-route', (req, res, next) => { // 中间件逻辑 next(); });
实例:子路由权限控制
以下是一个简单的权限控制示例,用于展示如何使用子路由。
const express = require('express');
const router = express.Router();
// 模拟用户权限数据
const users = [
{ id: 1, name: '张三', role: 'admin' },
{ id: 2, name: '李四', role: 'user' }
];
// 权限检查中间件
function checkRole(role) {
return (req, res, next) => {
const user = users.find(user => user.id === req.session.user_id);
if (user && user.role === role) {
next();
} else {
res.status(403).send('无权限访问');
}
};
}
// 定义子路由
router.get('/admin', checkRole('admin'), (req, res) => {
res.send('欢迎,管理员');
});
router.get('/user', checkRole('user'), (req, res) => {
res.send('欢迎,普通用户');
});
// 将子路由挂载到主路由
app.use('/main-route', router);
总结
通过使用子路由,您可以更好地组织和管理您的路由,实现更灵活的访问控制和功能划分。
子路由示例