情诗网 >套路情话 > 正文

express的路由嵌套

来源:情诗网    2020-12-27    分类:套路情话

一、安装依赖

npm install --save express

二、简单的路由

const express = require('express');
 
let app = express();
app.get("/",(req,res,next)=>{
    res.send("简单路由");
})
app.listen(8888);

以前我都是这样直接写路由。一个路由对应一个路径,没有任何嵌套。


这样就比较不灵活,没有清晰的路由嵌套,如果在 /api/aftvc/yungui/ 下面有两个子路由以前是这种写法:
app.get('/api/aftvc/yungui/users',回调函数);
app.get('/api/aftvc/yungui/order',回调函数);

现在我们就可以发挥应用中间件的作用:

const express = require('express');
 
let app = express();
app.listen(8888);
 
//创建路由实例,我们可以在该实例上自由的添加路由
let usersRouter = express.Router();
 
//添加两个路由到应用上
app.use('/api/aftvc/yungui', usersRouter);
 
//注意这时候再加路由,就可以不带前面的/users路径了
usersRouter.get('/', function (req, res) {
    res.send('用户首页');
});
 
usersRouter.get('/user/:id', function (req, res) {
    res.send(`${req.params.id} 用户信息`);
});
 
//注意这时候再加路由,就可以不带前面的/order路径了
usersRouter.get('/order/:id', function (req, res) {
    res.send(`${req.params.id} 订单信息`);
});

访问链接和结果:
http://127.0.0.1:8888/api/aftvc/yungui
用户首页
http://127.0.0.1:8888/api/aftvc/yungui/user/hero
hero 用户信息
http://127.0.0.1:8888/api/aftvc/yungui/order/hero
hero 订单信息
不过一般我们都是创建一个routes目录,专门用于放置路由文件,通过module.exports导出供外部使用。
例如:app.js

const express = require('express');
let app = express();
app.listen(8888);
 
//添加两个路由到应用上
app.use('/users', require('./routes/users'));
app.use('/order', require('./routes/order'));
 
//404判断
app.use(function (req, res) {
    res.send('404 not found');
});

users.js的代码:

const express = require('express');
 
let router = express.Router();
 
router.get('/', function (req, res) {
    res.send('用户首页');
});
 
router.get('/:id', function (req, res) {
    res.send(`${req.params.id} 用户信息`);
});
 
//导出该路由
module.exports = router;

order.js的代码:

const express = require('express');
 
let router = express.Router();
 
router.get('/', function (req, res) {
    res.send('订单首页');
});
 
router.get('/:id', function (req, res) {
    res.send(`${req.params.id} 订单信息`);
});
 
//导出该路由
module.exports = router;

现在你已经学会 Nodejs 路由的二级嵌套,可以模仿着进行多级路由嵌套。

2019年12月15日21:12:34

热门文章