Nodejs(Express) - 04 中间件

2019-11-21  本文已影响0人  Lisa_Guo

一、什么是中间件

中间件(Middleware)是在http的请求和响应之间进行拦截处理的模块, express通过各种各样的中间件实现强大的开发功能。


中间件流程.png
中间件流程.png

middleware是一个包含三个参数(request, response,next)的函数

app.use([path,] callback [, callback...])负责为express注册中间件

二、Express中间件分类

express大概分为三种中间件: 内置,三方, 自定义

2.1 内置中间件

express.static()

express.static用于响应对静态文件的请求。
express.static(root, [options])第一个参数root指定静态文件在项目中的目录

app.use(express.static(path.join(__dirname, 'public')));

express.json()

内置的json中间件负责把带有JSON的请求中(即Content-Type=‘application/json’)的数据提取出来,它基于body-parser

app.use(express.json());

express.urlencoded([options])

urlencoded负责将通过urlencoded发送请求(即Content-Type=‘application/x-www-form-urlencoded’)的数据提取出来,它基于body-parser
经过此中间件后,req.body为解析后的json串,否则为key-value键值对

options

var expected = {
    a: {
        b: {
           c: 'name'
        }
    }
};

以上参数可通过以下格式传递从而被服务器解析为json串
http://localhost/user?a[b][c]=name

express.Router

通过'Router()'生成express路由,使得路由可以通过中间件的方式管理,便于模块化开发

2.2 三方中间件

开源可直接使用的中间件,Express正是通过中间件这种扩展式的方式,大大地提升了开发效率,丰富了web开发功能

var express = require('express')
var app = express()
var cookieParser = require('cookie-parser')

// load the cookie-parsing middleware
app.use(cookieParser())

express middleware list

2.3 自定义中间件

应用程序自己定义的中间件,用于处理业务逻辑。

var app = express()

app.use(function (req, res, next) {
  console.log('Time:', Date.now())
  next()
})

错误处理中间件为特殊的中间件,用于处理异常错误。与普通中间件相比,它包含四个参数,第一个参数为错误信息

app.use(function (err, req, res, next) {
  console.error(err.stack)
  res.status(500).send('Something broke!')
})
上一篇 下一篇

猜你喜欢

热点阅读