espress中间件以及路由中间件

1.中间件-基本概念

middleware, 中间件一个特殊的url地址处理函数,它被当作 app.use(中间件函数) 的参数或者是某个路由处理函数中使用。

  • 中间件是 express 的最大特色,也是最重要的一个设计。

  • 一个 express 应用,就是由许许多多的中间件来完成的。

  • 中间件是一个函数。

  • 中间件不止一个,多个中间件按顺序执行。

2.中间件-基本使用

中间件函数中有三个基本参数, req、res、next

  • req就是请求相关的对象,它和下一个中间件函数中的req对象是一个对象

  • res就是响应相关的对象,它和下一个中间件函数中的res对象是一个对象

  • next:它是一个函数,调用它将会跳出当前的中间件函数,执行后续中间件;如果不调用next,也不执行res.end,则整个请求都会在当前中间件卡住。

const express = require('express')
const app = express();

//next:它是一个函数,调用它将会跳出当前的中间件函数,执行后续中间件;如果不调用next,也不执行res.end,则整个请求都会在当前中间件卡住
app.use((req, res, next) => {
  console.log("第1个中间件");
  req.a1 = 100;
  next();
});

app.use((req, res, next) => {
  console.log("第2个中间件");
  res.setHeader('content-type', 'text/html;charset=utf8');
  res.a2 = 200;
  next();
});

app.use((req, res, next) => {
  console.log("第3个中间件");
  req.a3 = 300;
  console.log(req.a1,req.a2)
  res.end('中间件');//end结束,没有end会报错
});


app.listen(3000,()=>{
    console.log('express应用在3000端口启动了'); 
})

示例

- app.use(中间件)是应用级中间件,所有的请求都能匹配。

- app.use('/apiname',中间件) 。匹配请求路径是/apiname的请求。

- app.get('/apiname',中间件) 。匹配get类型并且请求路径是/apiname的请求。

- app.get('/apiname',中间件1,中间件2) 。一个路由中使用多个中间件。

3.路由中间件

接口数量较多时,这些接口如果全写在一个文件中,代码不好管理。

作用:优化接口

如图所示创建文件

//user.js文件
const express = require('express')
const router = express.Router()

router.get('/getAge', function(req, res) {
    res.send('age');
});
  
router.get('/getName', function(req, res) {
    res.send('getName');
});
module.exports = router;


//category.js文件
const express = require('express')
const router = express.Router()

router.get('/list', function(req, res) {
    res.send(''my/category/list'');
});
  
  module.exports = router;


 

//server.js文件
const express = require('express');
const app = express();

const categoryRouter = require('./my/category');
//相当于app.get('/my/category/list', (req, res) => { res.send('my/category/list')})等等;

const userRouter = require('./my/user');//同理

// 路由中间件
app.use('/my/category', categoryRouter);
app.use(('/my/user', userRouter);

app.listen(8077, () => {
    console.log('-----------');
 })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值