express()
创建一个Express应用程序,express()
函数是express
模块导出的顶级函数。
var express = require('express');
var app = express();
方法
express.json([options])
此中间件在Express v4.16.0及更高版本中可用。
这是Express中的内置中间件函数,它使用JSON有效负载解析传入的请求,并基于body-parser。
返回仅解析JSON的中间件,并仅查看Content-Type
header与type
选项匹配的请求,此解析器接受body的任何Unicode编码,并支持gzip
的自动解压和deflate
编码。
在中间件(即req.body
)之后的request
对象上填充包含已解析数据的新body对象,或如果没有要解析的body则为空对象({}
)、Content-Type
不匹配、或发生错误。
由于
req.body
的形状基于用户控制的输入,因此该对象中的所有属性和值都是不可信的,应该在信任之前进行验证。例如,
req.body.foo.toString()
可能以多种方式失败,例如
foo
可能不存在或者可能不是字符串,而
toString
可能不是函数,而是字符串或其他用户输入。
下表描述了可选options
对象的属性。
属性 | 描述 | 类型 | 默认 |
---|---|---|---|
inflate | 启用或禁用处理压缩的body,禁用时,压缩的body会被拒绝。 | Boolean | true |
limit | 控制最大请求体大小,如果这是一个数字,则该值指定字节数; 如果是字符串,则将值传递给bytes库以进行解析; | 混合 | “100kb” |
reviver | reviver 选项作为第二个参数直接传递给JSON.parse ;你可以在有关JSON.parse的MDN文档中找到有关此参数的更多信息; | 函数 | null |
strict | 启用或禁用仅接受数组和对象; 禁用时将接受 JSON.parse 接受的任何内容; | Boolean | true |
type | 这用于确定中间件将解析的媒体类型; 此选项可以是字符串、字符串数组或函数; 如果不是函数,则将 type 选项直接传递给type-is库,这可以是扩展名(如json)、mime类型(如 application/json ),或带有通配符的mime类型(如 */* 或*/json );如果是函数,则将 type 选项作为fn(req) 调用,如果返回truthy值,则解析请求 | 混合 | “application/json” |
verify | 此选项(如果提供)称为verify(req, res, buf, encoding) ;其中 buf 是原始请求体的Buffer ;encoding 是请求的编码,可以通过抛出错误来中止解析。 | 函数 | undefined |
express.static(root, [options])
这是Express中的内置中间件函数,它提供静态文件,基于serve-static
。
注意:为获得最佳结果,请使用反向代理缓存来提高服务静态资源的性能。
root
参数指定从中提供静态资源的根目录,该函数通过将req.url
与提供的root
目录相结合来确定要提供的文件。当找不到文件时,它不是发送404响应,而是调用next()
继续下一个中间件,允许堆叠和回退。
下表描述了options
对象的属性,另请参见下面的示例。
属性 | 描述 | 类型 | 默认 |
---|---|---|---|
dotfiles | 确定如何处理dotfiles(以点“. ”开头的文件或目录);请参阅下面的dotfiles | String | “ignore” |
etag | 启用或禁用etag生成,注意:express.static 总是发送弱ETag | Boolean | true |
extensions | 设置文件扩展名回退:如果找不到文件, 搜索具有指定扩展名的文件并提供找到的第一个文件; 例如: ['html', 'htm'] | 混合 | false |