express()

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

const express = require('express')
const app = express()

express.json([options])

这是 Express 中内置的中间件函数。它使用 JSON 有效负载解析传入请求,并且基于 body-parser

返回仅解析 JSON 并且仅查看 Content-Type 标头与 type 选项匹配的请求的中间件。此解析器接受正文的任何​​ Unicode 编码,并支持 gzipdeflate 编码的自动膨胀。

包含解析数据的新 body 对象在中间件(即 req.body)之后填充到 request 对象上,如果没有要解析的主体、Content-Type 不匹配或发生错误,则填充一个空对象({})。

由于 req.body 的形状基于用户控制的输入,因此该对象中的所有属性和值都是不可信的,应该在信任之前进行验证。例如,req.body.foo.toString() 可能以多种方式失败,例如 foo 可能不存在或可能不是字符串,toString 可能不是函数,而是字符串或其他用户输入。

dPbW9L6OtNFlhqib7NlHfx6WHr0bMn3c4oJlcmQb4FcI2qJAvWrs4Kb9dtHj+qte72gkOm3GDC2BOvpKa78zSQ==

属性描述类型默认
inflate启用或禁用处理放气(压缩)的主体;当禁用时,瘪的主体会被拒绝。布尔值true
limit控制最大请求正文大小。如果这是一个数字,则该值指定字节数;如果是字符串,则将值传递给bytes库进行解析。混合"100kb"
reviverreviver 选项作为第二个参数直接传递给 JSON.parse。您可以找到有关此论点 在关于 JSON.parse 的 MDN 文档中 的更多信息。函数null
strict启用或禁用仅接受数组和对象;禁用时将接受 JSON.parse 接受的任何内容。布尔值true
type这用于确定中间件将解析的媒体类型。此选项可以是字符串、字符串数组或函数。如果不是函数,则 type 选项直接传递给 type-is 库,它可以是扩展名(如 json)、mime 类型(如 application/json)或带有通配符的 mime 类型(如 */**/json)。如果是函数,则 type 选项被称为 fn(req),如果请求返回真值,则解析请求。混合"application/json"
verify此选项(如果提供)称为 verify(req, res, buf, encoding),其中 buf 是原始请求正文的 Bufferencoding 是请求的编码。可以通过抛出错误来中止解析。函数undefined

express.static(root, [options])

y2eyWtXMtWSJhG8wcm6LDq8NW/5E8mBwzr0ObN2ArAOTIQuTsnUyNpNhEH1iwZE3A873oieJ7vNAGk8S9bfhV3/Cn2AtdAceTlLY1f0OPcK2r6PleIGMB1sgznUNSVWfFuibP00Uy7kBBbk6YApfo5TWiMQfLKBe3mbQn91qZ266fSfB4Vpe2+Zx3iw2pcuC

bVMDX/nKkOhYTR1J+W3FHx425ue9D6ADWvSOQ24I0SA2H+X5IQGSTMuiPaVjF0f/t4lQ9FFfy97r+0/KxF2w/N954xKTtSLK5Cn7m3Yh3+bmY8R518N4kbvDBCGqqkX2suJxuyYnAYPnNQe0BRHUWzBwPIByZZLJBrQb74VmSQvH48zM/aVf7M+0f/lKQ4mQSLwjC/H2H71fZIE2Bnflmw==

obSe59TxJSXutIvwfX0Dppo2nVb8qjLszeFuEXLO9yHEyZNBdI2YAiBp5nF6t3fy1mQ9PMhLcuJzHCENFxRyuCQae74CFkQq+NxxN6CDn+h1iSlMvsyYZkH9CxkZ0GxPRekHSRwq/F2BqbvPws/q9sAOdEmc/BXLIf5Wy5aG1novyaOXKg30LBk7s4jTnRJetoersoXXBnV8uFlxydDS+k7gj0MKnVFHUPt2l9ZEAQ4ZjYUIehlphd0dZ0LmNQsYGvdbBuXkkIJ24RYsDTeQ2fHdvtV3XXgiIV0A31csjSz9kOxM0MfjHaWKzvbR1Yh05FCW7j9I7MHQ3sjUcmr+AGveT90JnD/kyl53NKJwfWotIRMrYhTPHntmZ4VC49jZG4rfj5s5DXs6PEXp/TV0vLcOd+plHs8oWqXJsEHjkPsywWsPhyR95y2aVmERLTo4

JszA6Y+fX7hrCu+nus2zLHLNSIfGL9zc9zhQkbLB4zP/h9TWaBGhC6/eanELNzZZsDqHQbp2sTwuAZIJ2ECRAwn13jZCgb2VOqeSjZu8AHmnYm812VxRYVUWScaZ+Jutvsey/NiKFYRZ1/h0uiyCV7v0/DvT6hHOgXo+sDGAMuHUVkF6UYPiO1ZRlElMHbHQ

属性描述类型默认
dotfiles确定如何处理点文件(以点 "." 开头的文件或目录)。

见下文dotfiles
字符串"ignore"
etag启用或禁用 etag 生成

注意:express.static 总是发送弱 ETag。
布尔值true
extensions设置文件扩展名后备:如果找不到文件,请搜索具有指定扩展名的文件并提供第一个找到的文件。示例:['html', 'htm']混合false
fallthrough让客户端错误作为未处理的请求通过,否则转发客户端错误。

见下文fallthrough
布尔值true
immutableCache-Control 响应标头中启用或禁用 immutable 指令。如果启用,还应指定 maxAge 选项以启用缓存。immutable 指令将阻止受支持的客户端在 maxAge 选项的生命周期内发出条件请求以检查文件是否已更改。布尔值false
index发送指定的目录索引文件。设置为 false 以禁用目录索引。混合"index.html"
lastModifiedLast-Modified 标头设置为操作系统上文件的最后修改日期。布尔值true
maxAge设置 Cache-Control 标头的 max-age 属性(以毫秒为单位)或 ms 格式 中的字符串。数字0
redirect当路径名是目录时,重定向到尾随 "/"。布尔值true
setHeaders用于设置 HTTP 标头以与文件一起服务的功能。

见下文setHeaders
函数

XCyTpyCCUFSL7iEN2iHBPLxrlu4JT7qYWzzYpNjMb8B5ky1x4gBZJ/Yf5f7J9g8KpgrEXxlMyuIDAdmJnbkjkea95Pcur50xgFifl31UtcmsCOBj3I9kKFEKrvjn7IyOPqmSgl8j7WteUjiV1GQOz0ntyV8YR1+8t+aROcF3NEucDoRNw8fwI7eoFbNpf8MyNSiPng5xrd5SevqaXak2DK4QcYS9idAmFB2Lft23TxJGFasmGTDcoBEAI/t4ovUyhFIdfQAM25JxzxZoKXMnBQ==

dotfiles

AnjfKsGzSEYOt1MzQToDv6MGW5VJF4n/KP2dY1rSx7s=

    Gj5uZcSROf7ZlMawIEXniWfwEieEFdR1Zdxcz+gBojqFRzuboPo/aKGxP1I7XLHrzYLEyUoYrfg8uT2E+TC/BLFreQAyLBz1NhG3k5FHnI5/qxT3swjIj12b+WbkWA3e3zse1BFXsPLphsEB+sVexkUHzCvRWcbaWkwJUtpwje5lO8r8LbG3MbZWDCD0MZIWiyaOrOsXD2tzWSWcfHOrwK9ti3U35hb2CRDlqEBRn9MELGEso9IfO8OOSCUT31Y8acOpV7igsBDudhf7Q423p09LO5mAmqX4wt3b4EozX1XvraUqSd8+rT6z9Ze3YkpWEruLVkCIY0rhtWwDt5Q/z9mQFjlJgpjRfdy3HJWbxU3kFjrEaNqbfre0K2xIxA1dASlkkf0pRbybKV6/SPPcdw==

fallthrough

MWsIRLEjdizSJ/U1Ab4rduz2R3BRHxFUK08yJ+ZluJLUpn5kO9Fz8R+3g952U6klVLywcD7AzF+a1PNOo9DvmYw8ZfbddMitBO0oNtCxXfMNF80RKIlYE5aXHRR9NJg9RSvNQ+BAMnYZxOZ4mc6e3EB1i0VwJm2t6HxAuuhIuVRsFm4Mu22j2FXp0cs8aTEVx/bZ7/BzM3Y2+ep/C8f+mH7QR+mLDv+Z2tDAsjHsF0/bxNfKQSeikf5iwRXHn+Jy1p928F17VLcf6LY+MOGMe+oJ1or7iqVcsZxgVg1IBJ4T2dQo4cRPQWwQ5nZcg39Ji/Bu+yTwe8GqEBfvznDbytiDzI6b+OiSWO9SBV4E5no4G8fGBbocRCRn1pRl3nJGQOcI6eG2GICSn8krvcir/w==

gp0lTt0vnJn23OZ8R9duOjZzYzm6r2sOT+1v+IBAmbPPF4KdVOcBkD5xLm1HrJrcNtqMvYJ5AC38yG0HeRlAfPPqWFVgxR2bdaxlY/CWvQvB5jmhiDOeNzC26eBzbNoTZwsTh6/N8l/eS/cCaVHP+8rKKfOfSken/o2iqbcZwrC9iYCuBEzM1+nCTObKcEDbW+9agEgxB/BhaQpqgx0Vzw==

PyBS/jn1Hk55U55kSa0m4fLgUHi0QsXOe7Oz6yikSvsEXjZJSac6aguK1TM9Qb0lLFIhj5gAAEnOFWWiPILPjnYFQK98/fYcWZDJwJ1g5Cn1u5rl3hEEntzmWubNebLMYEM2TRRnhD0jQCrumbgQ3lbEH+n7XUEPWYgbP9rtYVlboNdl0aoCBrjE4MtBU1J7Yjc8u+3zXaQFb8IszYE4GXIYXkVcTnYU+mLa9ppC4XMUIJrKZSKXjkzmywOUMruJzPezgVlasI5V5d+Xpn23Fg==

setHeaders

+G6q3vC0zvDeuNe+IxJqeseF0Y1zcEsUoFfXiCAwyJs/3zLRv6H2za2AUBkuXtybSRED0pgxAd19vISL7ptvnAPzZ6OG7pSoyiwwm4P2pMtNRbY6zlfymlVRS3WUmoaJH87XTia1tvbfNmZCQ1Vrjw==

FR0iCP61I0aIyprpAxwBpaBaNaNqcH0tHMjqAjSNwLA=

fn(res, path, stat)

HW0DL6KfpFe64FsGoafT4A==

    7f4bvoB/sRw0PN3atyUhKL7ZdavKISaez6uAKkn5y35WNyYewjisG1pfmMrKsU7LqleWJOr/+F7oQe2gHp1WrVkmdedFXM0lV9/OeF1XmrDWG+fxS2+wVPF+Wbc0w2x5OTOFYMlhP0ugTxJ+g2doesx6YQoyrQ2LSdFc8l/imklKBx4QCtazMCs5+G+vsNkuwQz5ZUj6aH9yxxMQo4XjXNFsS1e4czn9P0evX1sa4xOqvKmE1EPUkMGIBvBtj6fgIwlBkxgJLyjT70p7MVkZh5VLjM8b/YodJrqoDdzA8T3Y/bdU26iiNIqisrplKENE

express.static 示例

qaLw5FFREmiqhVuk4JN9SwMUasOccW/kxqAUnEPHhfMb3eMB13p1CYb0V/6tkQ8nP5kibZyUFd7TbKGShYNBMwqqu2OkvEpGchAdnafIp+J0Ijyo1dw+Doj79RlFkfxLwMupqS9kpkJ7b9btIiXbGL92U2bbRb4DFitGw4JUWlk=

const options = {
  dotfiles: 'ignore',
  etag: false,
  extensions: ['htm', 'html'],
  index: false,
  maxAge: '1d',
  redirect: false,
  setHeaders (res, path, stat) {
    res.set('x-timestamp', Date.now())
  }
}

app.use(express.static('public', options))

express.Router([options])

Z9ePoPfEOg2BJxf7rC0EEGagGn6uCujAJ/KQ7FJ0kA9+Xs3ERBLu1ov2R447rzAEebSmOQKk6lHYiN9ZYSBXi9YDjnrPlTqW3/bQWU/wUarBjEWBDIVMooJ0h4sJZkAO

const router = express.Router([options])

Eq3gHn8VGwbquMMe/8X6mUCplE/xoY000lK1h8xXdiaNq8upjudSTDiNvNM+Dd0zaRLup8xVhTkeXTNrWQumyg==

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

ii3972Mkp6CLyWjMhEU8SiEybbUmwjbUTDmtonOzpfIemsnV5tbC1LGUeQqXiWMRw+vcrF6fGm9uILg9hQoA79IIToly2HJNzUVU25juN6wNJuILi7KyqViFo1jf8G5CBJYA5eZt+hCsAh4iHQ1oE9IV52G2RGoPrpNw7yqL+ibn7++ueQP8QAnvMb6p+YuK/bcb7r003v8Fpe/8NcODNtr0vCtW9dhqYdzK+TSDt14=

XCyTpyCCUFSL7iEN2iHBPLxrlu4JT7qYWzzYpNjMb8CNJzVb5rZhGbzBMcX9FrzS7U2GZUUIsKvOqcnCH66dyUISidM1oVu/EEBjbxLsIsZWh3Eeg31kLWeYLVs2YlFj

express.urlencoded([options])

y2eyWtXMtWSJhG8wcm6LDq8NW/5E8mBwzr0ObN2ArAOTIQuTsnUyNpNhEH1iwZE3njPos1DMalIWEMAYTWfITfW9dU6/0rBZVqieEB0EuEIK8DRz319G5d3Io/cwodhcRsB3gyN7JFGZpWX1Yud+CNlBPwEK/8VK+SlZIOn1IuX05PGHFrUwXtT0UK+FUIVQvtnj3Znm+B1FewkcZOE3j3MKTzg9pVCmz8oLEyxxVKGhb8MxJ29G8m/e3SxUZtUp

sVmALtx28h6mZRksf55YTgS6LH5hGWDdwKm2ScL7zFwJFcca7kHWC3nOYZdfwAp/UbqYUASx+SNiMdJUGtGJ1Gbf7F+DQ8120CV07uz4Vj4PZpV6xZCupBlTOtHWUeJUnBOdEx1KHzhnpSALaQiL5DWGxPtRtCYJ9TDaex4TCqFh2AQtEC/1OpD4/sKxW6peNSTEZsIsy9Uqb9BQ7fn4BsebMMSWeXMQZy6GxzX7tFsKSwoFEMjKf3ozoqmBzOCxPhgAqQSSpl/i06X8g8xTJrqC1ZiV+b9kFaVa7k2IeXtSmhP8kd0hrrX5vPdrKTlYiRQXbo6mX+9QVn4Lcok0XvRn5CMD5h89O2RxqqMCnfo=

rTYywpw+Gy+ZB6XNw7nfIK0kvfLDyIzaz2RsLlZGfuVRmvrkgvxZSvMbetY65/11yh4iAYuMKP/n6RZt+Z90ZVe2QHBpZ2yB9gIL9Nn5zLWrZqvPDpPgsOUylFe8MtV3g0fTN/sr+0snv+EEYxJVsyKe4vVURISTGAkTktdKEH/uohOvGtae1p03sShWVlJkjgcwSZQje+jiXNhgD/1PiI/RDowuCWj8156XP9tV/4GZItELtn20IeRvlFk0HlsDmio7+9TRhhgTuwLHrVcARooxPi1lpYYgyoG6S2PLZji2Qv5LF9WAQPE0bp4I9OQpxo4+qfxom6v6QWjNFnvVs9MhlcPUrRhkrGTcajIWldjuBK8PE+pkPXSLiqt5y99iJqpCUBsoFsucYoiWYPEE0GlfFrsO12PQBn2aSt3Mvm9em8KgBZI16lsSjVyyUQhT5R0mpbitZdBBG6Qr2rijR0IizqPJlPCPjshluk5Sb1KAGEOZYAeJemq81aNB4DlFOmtXlsLCf7Rg/IrXqCVXEjUWRzPFqPoTKVKvQK0fw1eXC1L6FinQ44bpv7yoUwyV3RaxinnaZ4fyG1uO6ATnwoZuRA0glaTfGRB+dwqPlR7B50qPu/63o4rCMBKeSPf9

qxhTg5RPNok/ivaPEYPIXql//y6pvWLruhkRM22Qwzh4Gf05XlsNHFDBCX/VH6mZRZ6aItim81vbJt6BZC6XlnpxDmBSJb/d2nG34M592zO6+8fur45/tHm5fsPtnd/6iOxb9FOWKhVj4ZRyMwh0YYKMlCYI1DDttSJZuy+evP5oVkbbFSjt/kggwazGNwwlXGXHA2kMTTXw2OTXRUXfAiQG4GnDcqyaNTf6ovaxT11Ewx67FCAGUGlCQ00yO8HwrlWc7q4Iagz8b/UTatiFV3Z3CWkdq2aTprCnKzQizK/IFOoBtP0cr54H4v2IE+RZzvlwRHt+WW2o23emAYi0s6t3R8laY67mL/EeFXzq/gGd+tBPkUzBBc87JcfqIEm4Jrs60Bz4wl8zKWeAWkCgE/rlJpwdYwTNEyZwY+eUZ6W2qbapkChqN/W0TSrDmiNedCA7nqDnOCp/BHvOo9yJI9h3F1qmCbHpPDvuCSXKGj2QVA34kgN1WhpYwdW1AsTMXU8ablHIcMTAfdyb/pymyA==

dPbW9L6OtNFlhqib7NlHfx6WHr0bMn3c4oJlcmQb4FcI2qJAvWrs4Kb9dtHj+qte72gkOm3GDC2BOvpKa78zSQ==

属性描述类型默认
extended此选项允许在使用 querystring 库(当 false)或 qs 库(当 true)解析 URL 编码数据之间进行选择。"extended" 语法允许将丰富的对象和数组编码为 URL 编码格式,从而提供类似 JSON 的 URL 编码体验。欲了解更多信息,请 查看 qs 库布尔值false
inflate启用或禁用处理放气(压缩)的主体;当禁用时,瘪的主体会被拒绝。布尔值true
limit控制最大请求正文大小。如果这是一个数字,则该值指定字节数;如果是字符串,则将值传递给bytes库进行解析。混合"100kb"
parameterLimit此选项控制 URL 编码数据中允许的最大参数数。如果请求包含的参数多于该值,则会引发错误。数字1000
type这用于确定中间件将解析的媒体类型。此选项可以是字符串、字符串数组或函数。如果不是函数,则 type 选项直接传递给 type-is 库,它可以是扩展名(如 urlencoded)、mime 类型(如 application/x-www-form-urlencoded)或带有通配符的 mime 类型(如 */x-www-form-urlencoded)。如果是函数,则 type 选项被称为 fn(req),如果请求返回真值,则解析请求。混合"application/x-www-form-urlencoded"
verify此选项(如果提供)称为 verify(req, res, buf, encoding),其中 buf 是原始请求正文的 Bufferencoding 是请求的编码。可以通过抛出错误来中止解析。函数undefined