express()
创建一个Express应用程序。该express()
功能是express
模块导出的顶级功能。
var express = require('express')
var app = express()
方法
express.json([options])
Express v4.16.0及更高版本中提供了此中间件。
这是Express中的内置中间件功能。它使用body解析器解析带有JSON负载的传入请求 。
返回仅解析JSON并且仅查看Content-Type
标头与type
选项匹配的请求的中间件。该解析器接受主体的任何Unicode编码,并支持gzip
和 deflate
编码的自动填充。
如果没有要解析的主体,不匹配的主体或发生错误,则将body
包含已解析数据的新对象填充request
到中间件之后的req.body
对象上;{}
如果没有要解析的主体,则填充一个空对象()Content-Type
。
由于
req.body
的形状基于用户控制的输入,因此该对象中的所有属性和值都不可信,应在可信之前进行验证。例如,req.body.foo.toString()
可能以多种方式失败,例如foo
可能不存在或可能不是字符串,并且toString
可能不是函数,而是字符串或其他用户输入。
下表描述了可选options
对象的属性。
属性 | 描述 | 类型 | 默认 |
---|---|---|---|
inflate |
启用或禁用处理压缩的(压缩的)实体;禁用时,放气的身体将被拒绝。 | Boolean | true |
limit |
控制最大请求正文大小。如果这是一个数字,则该值指定字节数;如果是字符串,则将值传递到byte库进行解析。 | Mixed | "100kb" |
reviver |
该reviver 选项直接JSON.parse 作为第二个参数传递给。您可以在MDN文档中JSON.parse此参数上找到更多信息。 |
Function | null |
strict |
启用或禁用仅接受数组和对象;禁用时将接受任何接受的东西JSON.parse 。 |
Boolean | true |
type |
这用于确定中间件将解析的媒体类型。此选项可以是字符串,字符串数组或函数。如果不是函数,则将type 选项直接传递到type-is库,该名称可以是扩展名(如json ),MIME类型(如application/json )或带有通配符的MIME类型(如*/* 或*/json )。如果是函数,则将type 选项称为as fn(req) ,如果请求返回真实值,则将解析请求。 |
Mixed | "application/json" |
verify |
如果提供了此选项,则称为verify(req, res, buf, encoding) ,其中buf 是Buffer 原始请求正文的,encoding 是请求的编码。抛出错误可以中止解析。 |
Function | undefined |
express.raw([options])
Express v4.17.0及更高版本中提供了此中间件。
这是Express中的内置中间件功能。它将传入的请求有效内容解析为,Buffer
并基于 body-parser。
返回将所有主体解析为a的中间件,Buffer
并且仅查看Content-Type
标头与type
选项匹配的请求。该解析器接受主体的任何Unicode编码,并支持gzip
和 deflate
编码的自动填充。
如果没有要解析的主体,不匹配的主体或发生错误,则将body
Buffer
包含解析后的数据的新request
对象填充到中间件之后的req.body
对象上;{}
如果没有要解析的主体,则填充一个空对象()Content-Type
。
由于
req.body
的形状基于用户控制的输入,因此该对象中的所有属性和值都不可信,应在可信之前进行验证。例如,req.body.toString()
可能以多种方式失败,例如,堆叠多个解析器req.body
可能来自不同的解析器。测试是否req.body
是一个Buffer
建议调用缓存方法之前。
下表描述了可选options
对象的属性。
属性 | 描述 | 类型 | 默认 |
---|---|---|---|
inflate |
启用或禁用处理压缩的(压缩的)实体;禁用时,放气的身体将被拒绝。 | Boolean | true |
limit |
控制最大请求正文大小。如果这是一个数字,则该值指定字节数;如果是字符串,则将值传递到byte库进行解析。 | Mixed | "100kb" |
type |
这用于确定中间件将解析的媒体类型。此选项可以是字符串,字符串数组或函数。如果不是函数,则将type 选项直接传递到type-is库,该名称可以是扩展名(如bin ),MIME类型(如application/octet-stream )或带有通配符的MIME类型(如*/* 或application/* )。如果是函数,则将type 选项称为as fn(req) ,如果请求返回真实值,则将解析请求。 |
Mixed | "application/octet-stream" |
verify |
如果提供了此选项,则称为verify(req, res, buf, encoding) ,其中buf 是Buffer 原始请求正文的,encoding 是请求的编码。抛出错误可以中止解析。 |
Function | undefined |
express.Router([options])
创建一个新的路由器对象。
var router = express.Router([options])
可选options
参数指定路由器的行为。
属性 | 描述 | 默认 | 可用性 |
---|---|---|---|
caseSensitive |
启用区分大小写。 | 默认禁用,将“ / Foo”和“ / foo”视为相同。 | |
mergeParams |
保留req.params 来自父路由器的值。如果父项和子项的参数名称冲突,则子项的值优先。 |
false |
4.5.0+ |
strict |
启用严格路由。 | 默认情况下禁用,路由器将“ / foo”和“ / foo /”视为相同。 |
您可以添加中间件和HTTP方法路由(如get
,put
,post
,等),以router
就像一个应用程序。
有关更多信息,请参见Router。
express.static(root,[options])
这是Express中的内置中间件功能。它提供静态文件,并基于serve-static。
注意:为了获得最佳结果,请使用反向代理缓存来提高服务静态资产的性能。
该root
参数指定要从其提供静态资产的根目录。该功能通过req.url
与提供的root
目录结合来确定要服务的文件。当找不到文件时,它不发送404响应,而是调用next()
移至下一个中间件,从而可以进行堆栈和回退。
下表描述了options
对象的属性。另请参见下面示例。
属性 | 描述 | 类型 | 默认 |
---|---|---|---|
dotfiles |
确定如何处理点文件(以点”.”开头的文件或目录)。 见点文件下方。 |
String | “ignore” |
etag |
启用或禁用etag生成 注意: express.static 始终发送弱ETag。 |
Boolean | true |
extensions |
设置文件扩展名后备:如果未找到文件,请搜索具有指定扩展名的文件并提供找到的第一个文件。范例:['html', 'htm'] 。 |
Mixed | false |
fallthrough |
让客户端错误作为未处理的请求进入,否则转发客户端错误。 参见下通下方。 |
Boolean | true |
immutable |
immutable 在Cache-Control 响应头中启用或禁用指令。如果启用,maxAge 还应指定该选项以启用缓存。该immutable 指令将阻止受支持的客户端在maxAge 选项有效期内提出条件请求,以检查文件是否已更改。 |
Boolean | false |
index |
发送指定的目录索引文件。设置为false 禁用目录索引。 |
Mixed | “index.html” |
lastModified |
将Last-Modified 标题设置为操作系统上文件的最后修改日期。 |
Boolean | true |
maxAge |
设置Cache-Control标头的max-age属性(以毫秒为单位)或以ms格式设置字符串。 | Number | 0 |
redirect |
当路径名是目录时,重定向到结尾的“ /”。 | Boolean | true |
setHeaders |
设置HTTP标头以与文件一起使用的功能。 请参阅下面的setHeaders。 |
Function |
有关更多信息,请参见在Express中提供静态文件。和使用中间件-内置中间件。
dotfiles
该选项的可能值为:
- “allow”-对dotfiles没有特殊处理。
- “deny”-拒绝对dotfiles的请求,以响应
403
,然后调用next()
。 - “ignore”-就像dotfiles不存在一样,用响应
404
,然后调用next()
。
注意:使用默认值时,它将不会忽略以dotfiles的目录中的文件。
fallthrough
当此选项为时true
,客户端错误(例如错误的请求或对不存在的文件的请求)将导致此中间件简单地调用next()
以调用堆栈中的下一个中间件。设为false时,这些错误(即使是404错误)也会调用next(err)
。
将此选项设置为,true
以便您可以将多个物理目录映射到同一网址,或用于路由以填充不存在的文件。
使用false
如果你已经安装该中间件在设计是严格意义上的单一文件系统的目录,它允许较少的开销短路404的路径。该中间件还将答复所有方法。
setHeaders
对于此选项,请指定用于设置自定义响应标题的函数。标头的更改必须同步进行。
该函数的签名是:
fn(res, path, stat)
参数:
res
,响应对象。path
,即正在发送的文件路径。stat
,stat
即正在发送的文件的对象。express.static的示例
这是将express.static
中间件功能与精心设计的options对象结合使用的示例:var options = { dotfiles: 'ignore', etag: false, extensions: ['htm', 'html'], index: false, maxAge: '1d', redirect: false, setHeaders: function (res, path, stat) { res.set('x-timestamp', Date.now()) } } app.use(express.static('public', options))
express.text([options])
Express v4.17.0及更高版本中提供了此中间件。
这是Express中的内置中间件功能。它将传入的请求有效负载解析为字符串,并且基于 body-parser。
返回将所有主体解析为字符串并且仅查看Content-Type
标头与type
选项匹配的请求的中间件。该解析器接受主体的任何Unicode编码,并支持gzip
和 deflate
编码的自动填充。body
包含request
中间件(例如req.body
)之后的对象上将填充一个包含已解析数据的新字符串,{}
如果没有要解析的主体,该对象Content-Type
不匹配或发生错误,则在该对象上填充一个空对象()。
由于
req.body
的形状基于用户控制的输入,因此该对象中的所有属性和值都不可信,应在可信之前进行验证。例如,req.body.trim()
可能以多种方式失败,例如,堆叠多个解析器req.body
可能来自不同的解析器。req.body
建议在调用字符串方法之前测试该字符串。
下表描述了可选options
对象的属性。
属性 | 描述 | 类型 | 默认 |
---|---|---|---|
defaultCharset |
如果未在Content-Type 请求的标题中指定字符集,则为文本内容指定默认字符集。 |
String | "utf-8" |
inflate |
启用或禁用处理压缩的(压缩的)实体;禁用时,放气的身体将被拒绝。 | Boolean | true |
limit |
控制最大请求正文大小。如果这是一个数字,则该值指定字节数;如果是字符串,则将值传递到byte库进行解析。 | Mixed | "100kb" |
type |
这用于确定中间件将解析的媒体类型。此选项可以是字符串,字符串数组或函数。如果不是函数,则将type 选项直接传递到type-is库,该名称可以是扩展名(如txt ),MIME类型(如text/plain )或带有通配符的MIME类型(如*/* 或text/* )。如果是函数,则将type 选项称为as fn(req) ,如果请求返回真实值,则将解析请求。 |
Mixed | "text/plain" |
verify |
如果提供了此选项,则称为verify(req, res, buf, encoding) ,其中buf 是Buffer 原始请求正文的,encoding 是请求的编码。抛出错误可以中止解析。 |
Function | undefined |
express.urlencoded([options])
Express v4.16.0及更高版本中提供了此中间件。
这是Express中的内置中间件功能。它使用urlencoded的有效载荷解析传入的请求,并且基于body-parser。
返回仅解析urlencoded主体并且仅查看Content-Type
标头与type
选项匹配的请求的中间件。此解析器接受体的唯一的UTF-8编码并支持的自动充气gzip
和deflate
编码。
如果没有要解析的主体,不匹配的主体或发生错误,则将body
包含已解析数据的新对象填充request
到中间件之后的req.body
对象上;{}
如果没有要解析的主体,则填充一个空对象()Content-Type
。该对象将包含键-值对,其中该值可以是一个字符串或阵列(时extended
是false
),或任何类型的(当extended
是true
)。
由于
req.body
的形状基于用户控制的输入,因此该对象中的所有属性和值都不可信,应在可信之前进行验证。例如,req.body.foo.toString()
可能以多种方式失败,例如foo
可能不存在或可能不是字符串,并且toString
可能不是函数,而是字符串或其他用户输入。
下表描述了可选options
对象的属性。
属性 | 描述 | 类型 | 默认 |
---|---|---|---|
extended |
通过此选项,您可以在使用querystring 库(when false )或使用qs 库(when true )解析URL编码的数据之间进行选择。“扩展”语法允许将丰富的对象和数组编码为URL编码格式,从而使URL编码具有类似JSON的体验。有关更多信息,请参见qs库。 |
Boolean | true |
inflate |
启用或禁用处理压缩的(压缩的)实体;禁用时,放气的身体将被拒绝。 | Boolean | true |
limit |
控制最大请求正文大小。如果这是一个数字,则该值指定字节数;如果是字符串,则将值传递到byte库进行解析。 | Mixed | "100kb" |
parameterLimit |
此选项控制URL编码数据中允许的最大参数数量。如果请求包含的参数超出此值,将引发错误。 | Number | 1000 |
type |
这用于确定中间件将解析的媒体类型。此选项可以是字符串,字符串数组或函数。如果不是函数,则将type 选项直接传递到type-is库,该名称可以是扩展名(如urlencoded ),MIME类型(如application/x-www-form-urlencoded )或带有通配符的MIME类型(如*/x-www-form-urlencoded )。如果是函数,则将type 选项称为as fn(req) ,如果请求返回真实值,则将解析请求。 |
Mixed | "application/x-www-form-urlencoded" |
verify |
如果提供了此选项,则称为verify(req, res, buf, encoding) ,其中buf 是Buffer 原始请求正文的,encoding 是请求的编码。抛出错误可以中止解析。 |
Function | undefined |