1、中间件指的是函数可以访问请求对象req,响应对象res,请求-响应环中的next函数1.1 错误处理中间件包含四个参数形式如下function middleware(err, req,res,next) {}app.use(middleware)1.2 内部中间件1.2.1 express.json([options])基于body-parser解析负载为JSON的请求。返回仅仅解析JSON并且查找Content-Type与type选项匹配的请求。解析器接受消息体为任意的unicode编码支持gzipdeflate编码。options支持的参数参数描述类型默认值inflate开启或者关闭处理压缩消息体。当关闭时压缩消息体会被拒绝Booleantruelimit控制最大消息体大小。如果是数字表示字节大小。如果是字符串解析为字节Mixed100kbreceiver直接作为第二个参数传给JSON.parseFunctionnullstrict开启或者关闭仅仅接受数组和对象。当关闭时会接受JSON.parse接受的Booleantruetype决定中间件将解析的媒体类型Mixed“application/jsonverify当该选项提供时会作为verify(req,res,buf,encoding)调用。buf是原生请求体的buffer,encoding是请求的编码。解析会通过抛出异常来中止。Functionundefined1.2.2 express.urlencoded([options])基于body-parser解析带有urlencoded负载的请求。解析urlencoded消息体仅仅查找请求的Content-Type匹配type选项的。解析器接受utf-8编码的消息体支持自动gzip和deflate的压缩编码。options支持的参数有参数描述类型默认值extended主要选择是使用querystring库还是qs库来解析url编码数据。true时表示选择qs库false表示选择querystring库。Booleantrueinflate开启或者关闭处理压缩消息体。当关闭时压缩消息体会被拒绝Booleantruelimit控制最大消息体大小。如果是数字表示字节大小。如果是字符串解析为字节Mixed100kbparameterLimit控制url编码数据的最大参数个数Number1000type决定中间件将解析的媒体类型。该选项可以是字符串字符串数组或者函数。如果不是函数。type选项传递给type-is库来解析。可以是像urlencoded的扩展名比如果application/x-www-form-urlencoded或者*/x-www-form-urlencoded。如果是一个函数。type选项会通过fn(req)来调用。Mixed“application/x-www-form-urlencodedverify当该选项提供时会作为verify(req,res,buf,encoding)调用。buf是原生请求体的buffer,encoding是请求的编码。解析会通过抛出异常来中止。Functionundefined2、路由Routerlet router express.Router()方法说明router.param(name, callback)添加路由参数回调为了代码复用callback原型为function(req, res, next, value, name)router.route(path):Route配置路由为了后面为路由添加处理器router.use(middleware)路由添加中间件2.1 Route方法说明METHOD(callback)METHOD可以是get,post,put,delete,callback原型为function(req, res, next)