今天我们来了解一下 nodejs 中间件。它最重要的思想便是 洋葱模型 ,从外到内依次执行中间件。
中间件概念
在NodeJS中,中间件主要是指封装所有Http请求细节处理的方法。一次Http请求通常包含很多工作,如记录日志、ip过滤、查询字符串、请求体解析、Cookie处理、权限验证、参数验证、异常处理等,但对于Web应用而言,并不希望接触到这么多细节性的处理,因此引入中间件来简化和隔离这些基础设施与业务逻辑之间的细节,让开发者能够关注在业务的开发上,以达到提升开发效率的目的。
什么是 中间件?
- 中间件在字面上的意思是你在软件的一层和另一层中间放置的任何东西。
- Express 中间件是在对 Express 服务器请求的生命周期内所执行的函数。
- 每个中间件都可以访问其被附加到的所有路由的 HTTP 请求和响应。
- 另外,中间件可以终止 HTTP 请求,也可以用 next 将其传递给另一个中间件函数。中间件的这种“链”使你可以对代码进行划分并创建可重用的中间件。
一. 中间件的写法
前后端交互最重要的就是两个参数 request 和 respond ,每一个中间件执行完毕应该进入下一个中间件,因此还需要一个 next 参数,用来启动下一个中间件。
let body = function(req, res, next){
// 中间代码不作解释
//req是请求对象 res是响应对象
console.log(' 解析请求体');
next()
}
二. 中间件的使用
1.应用级别的使用
也称为自定义中间件,是一个函数(回调函数)
next是一个函数,表示执行下一个中间件或者路由
app.use( '/', function(req,res,next){ } )
function appmiddleware(req,res,next){
console.log("这个是app级别的使用");
next();
}
//直接调用信息
app.use(appmiddleware);
内置中间件
app.use( express.static('托管的目录') )
把所有的静态资源托管到某个目录,如果浏览器请求静态资源,自动到该目录下寻找,无需创建路由
第三方中间件
body-parser中间件使用
//1.下载安装
npm install body-parser;
//2.引入中间件模块
const bodyParser=require('body-parser');
//3.使用中间件
//将post请求数据解析为对象
app.use( bodyParser.urlencoded({
extended:false //不使用第三方的qs模块解析查询字符串为对象,而是使用querystring模块
}) )
//4.在post请求的路由中
req.body 返回对象