express()

创建一个Express应用程序。该express()功能是express模块导出的顶级功能。

  1. var express = require('express')
  2. var app = express()

方法

express.json([options])

Express v4.16.0及更高版本中提供了此中间件。

这是Express中的内置中间件功能。它使用body解析器解析带有JSON负载的传入请求 。
返回仅解析JSON并且仅查看Content-Type标头与type选项匹配的请求的中间件。该解析器接受主体的任何Unicode编码,并支持gzipdeflate编码的自动填充。
如果没有要解析的主体,不匹配的主体或发生错误,则将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),其中bufBuffer原始请求正文的,encoding是请求的编码。抛出错误可以中止解析。 Function undefined

express.raw([options])

Express v4.17.0及更高版本中提供了此中间件。

这是Express中的内置中间件功能。它将传入的请求有效内容解析为,Buffer并基于 body-parser
返回将所有主体解析为a的中间件,Buffer并且仅查看Content-Type标头与type选项匹配的请求。该解析器接受主体的任何Unicode编码,并支持gzipdeflate编码的自动填充。
如果没有要解析的主体,不匹配的主体或发生错误,则将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),其中bufBuffer原始请求正文的,encoding是请求的编码。抛出错误可以中止解析。 Function undefined

express.Router([options])

创建一个新的路由器对象。

  1. var router = express.Router([options])

可选options参数指定路由器的行为。

属性 描述 默认 可用性
caseSensitive 启用区分大小写。 默认禁用,将“ / Foo”和“ / foo”视为相同。
mergeParams 保留req.params来自父路由器的值。如果父项和子项的参数名称冲突,则子项的值优先。 false 4.5.0+
strict 启用严格路由。 默认情况下禁用,路由器将“ / foo”和“ / foo /”视为相同。

您可以添加中间件和HTTP方法路由(如getputpost,等),以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 immutableCache-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,即正在发送的文件路径。
  • statstat即正在发送的文件的对象。

    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编码,并支持gzipdeflate编码的自动填充。
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),其中bufBuffer原始请求正文的,encoding是请求的编码。抛出错误可以中止解析。 Function undefined

express.urlencoded([options])

Express v4.16.0及更高版本中提供了此中间件。

这是Express中的内置中间件功能。它使用urlencoded的有效载荷解析传入的请求,并且基于body-parser
返回仅解析urlencoded主体并且仅查看Content-Type标头与type选项匹配的请求的中间件。此解析器接受体的唯一的UTF-8编码并支持的自动充气gzipdeflate编码。
如果没有要解析的主体,不匹配的主体或发生错误,则将body包含已解析数据的新对象填充request 到中间件之后的req.body对象上;{}如果没有要解析的主体,则填充一个空对象()Content-Type。该对象将包含键-值对,其中该值可以是一个字符串或阵列(时extendedfalse),或任何类型的(当extendedtrue)。

由于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),其中bufBuffer原始请求正文的,encoding是请求的编码。抛出错误可以中止解析。 Function undefined