美文网首页
Nodejs(Express) - 04 中间件

Nodejs(Express) - 04 中间件

作者: Lisa_Guo | 来源:发表于2019-11-21 19:51 被阅读0次

一、什么是中间件

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


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

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

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

  • path参数为匹配路由,若指定则只针对特定路由进行拦截。不指定则对所有请求和响应都做拦截
  • calllback(request, response, next) 中间件函数,可以一次传入多个。
    • request: HTTP请求对象
    • response:HTTP响应对象
    • next:处理完后交给下一个路由。若不调用则处理到此为止,不进行后续操作

二、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

  • extended:false - 使用内置querystring解析参数; true - 使用qs库解析参数,允许参数有json-like的复杂数据类型
var expected = {
    a: {
        b: {
           c: 'name'
        }
    }
};

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

  • type: 'application/x-www-form-urlencoded' 只解析此类参数

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!')
})

相关文章

  • 正在学习的项目

    nodejs+mongodb+ejs+express 学到的知识 mongodb的常用操作express中间件的使...

  • nodejs之koa中间件源码解析

    前言 上一篇《nodejs之express中间件》已经对express中间件的实现做了详细的讲解,同时也对实现中间...

  • Nodejs(Express) - 04 中间件

    一、什么是中间件 中间件(Middleware)是在http的请求和响应之间进行拦截处理的模块, express通...

  • Nodejs异步回调之异常处理实例

    目前我们项目的Nodejs异常是通过express next 到 errorhandler 中间件去处理的,原本以...

  • Nodejs异步回调之异常处理

    目前我们项目的Nodejs异常是通过express next 到 errorhandler 中间件去处理的,原本以...

  • nodejs express中间件

    Express 是一个自身功能极简,完全是由路由和中间件构成一个的 web 开发框架:从本质上来说,一个 Expr...

  • Nodejs express中间件

    express中间件可以理解为由含有req,res,next三个参数的方法,通过next()无限调用 基本样式(r...

  • 3.模块

    1.multer multer用于处理文件上传的nodejs中间件,主要跟express框架搭配使用,只支持表单M...

  • Express中间件

    Express框架是由路由和中间件构成的一个web开发框架。 1. Express 中间件 中间件是Express...

  • nodejs express-jwt解析

    作用是什么 express-jwt是nodejs的一个中间件,他来验证指定http请求的JsonWebTokens...

网友评论

      本文标题:Nodejs(Express) - 04 中间件

      本文链接:https://www.haomeiwen.com/subject/drtxwctx.html