# express.urlencoded
使用 urlencoded 有效负载解析传入的请求,并且基于 body-parser。
# 概述
express.urlencoded([options])
# 描述
这是 Express 中内置的中间件函数。它使用 urlencoded 有效负载解析传入的请求,并且基于 body-parser。
返回仅解析 urlencoded 正文并仅查看 Content-Type 标头与 type 选项匹配的请求的中间件。此解析器仅接受正文的 UTF-8 编码,并支持 gzip 和 deflate 编码的自动膨胀。
包含解析数据的新 body 对象在中间件(即 req.body)之后填充到 request 对象上,如果没有要解析的主体、Content-Type 不匹配或发生错误,则填充一个空对象({})。该对象将包含键值对,其中值可以是字符串或数组(当 extended 为 false 时)或任何类型(当 extended 为 true 时)。
由于
req.body的形状基于用户控制的输入,因此该对象中的所有属性和值都是不可信的,应该在信任之前进行验证。例如,req.body.foo.toString()可能以多种方式失败,例如foo可能不存在或可能不是字符串,toString可能不是函数,而是字符串或其他用户输入。
下表描述了可选 options对象的属性。
| 属性 | 描述 | 类型 | 默认 |
|---|---|---|---|
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 是原始请求正文的 Buffer,encoding 是请求的编码。可以通过抛出错误来中止解析。 | 函数 | undefined |