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编码,支持gzip,deflate编码。
options支持的参数
参数 | 描述 | 类型 | 默认值 |
inflate | 开启或者关闭处理压缩消息体。当关闭时,压缩消息体会被拒绝 | Boolean | true |
limit | 控制最大消息体大小。如果是数字,表示字节大小。如果是字符串,解析为字节 | Mixed | "100kb" |
receiver | 直接作为第二个参数传给JSON.parse | Function | null |
strict | 开启或者关闭仅仅接受数组和对象。当关闭时会接受JSON.parse接受的 | Boolean | true |
type | 决定中间件将解析的媒体类型 | Mixed | “application/json" |
verify | 当该选项提供时,会作为verify(req,res,buf,encoding)调用。buf是原生请求体的buffer,encoding是请求的编码。解析会通过抛出异常来中止。 | Function | undefined |
1.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库。 | Boolean | true |
inflate | 开启或者关闭处理压缩消息体。当关闭时,压缩消息体会被拒绝 | Boolean | true |
limit | 控制最大消息体大小。如果是数字,表示字节大小。如果是字符串,解析为字节 | Mixed | "100kb" |
parameterLimit | 控制url编码数据的最大参数个数 | Number | 1000 |
type | 决定中间件将解析的媒体类型。该选项可以是字符串,字符串数组或者函数。如果不是函数。type选项传递给type-is库来解析。可以是像urlencoded的扩展名,比如果application/x-www-form-urlencoded或者*/x-www-form-urlencoded。如果是一个函数。type选项会通过fn(req)来调用。 | Mixed | “application/x-www-form-urlencoded" |
verify | 当该选项提供时,会作为verify(req,res,buf,encoding)调用。buf是原生请求体的buffer,encoding是请求的编码。解析会通过抛出异常来中止。 | Function | undefined |