车体参数
节点.js身体剖析中间软件.
在您处理器前的中间软件中分析收到的请求机构, 可用
下划线 req.body 属性.
在 Node.js 中了解 HTTP 交易的解剖。 。 。 .
这不处理多部分机构由于其复杂性和典型性 巨大的自然。 对于多部分机构,您可能感兴趣的是: 模块 :
本模块提供以下解析器:
你可能感兴趣的其他身体分析器:
安装
$ npm install body-parser
API 密码
var bodyParser = require('body-parser')
这个 bodyParser 对象会暴露各种工厂来创建中间软件。 全体
中间软件将覆盖 req.body 与解析后的身体相关的财产,或
空对象( r){}),如果没有身体来解析(或返回错误).
此模块返回的各种错误在 错误部分。 。 。 .
bodyParser.json(选项)
返回只解析的中间软件 json。此解析器接受任何 Unicode
机身编码和支持自动膨胀 gzip 财务报告和审定财务报表 deflate
编码.
一个新的 body 包含解析数据的对象在 request
中间软件(即:. req.body) (中文(简体) ).
选项
这个 json 函数选择选项 options 可能包含其中任一对象的物体
下列密钥:
充电
设定为 true,然后膨胀(压缩)而膨胀
false,减肥后的身体被拒绝。 默认为 true。 。 。 .
限制
控制最大请求体积。 如果这是数字, 那么值
指定字节数;如果是字符串,则将数值传递给
字节 用于解析的库。 默认
改为 '100kb'。 。 。 .
复活器
这个 reviver 选项直接传递到 JSON.parse 作为第二个
参数。 您可以找到关于此参数的更多信息
在关于JSON的MDN文档中。 剖析。 。 。 .
严格
设定为 true,将仅接受数组和对象 false 将
接受任何东西 JSON.parse 接受这个建议。 默认为 true。 。 。 .
类型
这个 type 选项用于确定中间软件的介质类型
剖析。 此选项可以是函数或字符串 。 如果一个弦, type 选项
直接传递给 类型是
库和此选项可以是扩展名( 如 json),一种mime类型(如:
application/json),或带有通配符的mime类型(如 */* 或者说 */json) (中文(简体) ).
如果一个函数,则 type 选项称为 fn(req) 请求是
如果返回一个真实值, 解析 。 默认为 application/json。 。 。 .
校验
这个 verify 选项,如果提供,则称为 verify(req, res, buf, encoding), (中文(简体) ),
地点 buf 是一个 Buffer 原始请求体和 encoding 这是
请求的编码。 解析可以通过扔出错误来中止 .
bodyParser.raw(选项)
返回将所有正体描述为 Buffer此解析器
支持自动通货膨胀 gzip 财务报告和审定财务报表 deflate 编码.
一个新的 body 包含解析数据的对象在 request
中间软件(即:. req.body) (中文(简体) ). 这将是一个 Buffer 对象
身体的形状.
选项
这个 raw 函数选择选项 options 可能包含其中任一对象的物体
下列密钥:
充电
设定为 true,然后膨胀(压缩)而膨胀
false,减肥后的身体被拒绝。 默认为 true。 。 。 .
限制
控制最大请求体积。 如果这是数字, 那么值
指定字节数;如果是字符串,则将数值传递给
字节 用于解析的库。 默认
改为 '100kb'。 。 。 .
类型
这个 type 选项用于确定中间软件的介质类型
剖析。 此选项可以是函数或字符串 。 如果一个弦, type 选项
直接传递给 类型是
库和此选项可以是扩展名( 如 bin),一种mime类型(如:
application/octet-stream),或带有通配符的mime类型(如 */* 或者说
application/*) (中文(简体) ). 如果一个函数,则 type 选项称为 fn(req)
如果请求返回一个真实值,则对其进行解析。 默认为
application/octet-stream。 。 。 .
校验
这个 verify 选项,如果提供,则称为 verify(req, res, buf, encoding), (中文(简体) ),
地点 buf 是一个 Buffer 原始请求体和 encoding 这是
请求的编码。 解析可以通过扔出错误来中止 .
bodyParser.text(选项)
返回将所有天体描述为字符串的中间软件。 此解析器支持
自动通货膨胀 gzip 财务报告和审定财务报表 deflate 编码.
一个新的 body 包含解析数据的字符串包含在 request
中间软件(即:. req.body) (中文(简体) ). 这将是弦
躯体.
选项
这个 text 函数选择选项 options 可能包含其中任一对象的物体
下列密钥:
默认字符集
如果字符集不是,请指定文本内容的默认字符集
定义 Content-Type 请求头。 默认为 utf-8。 。 。 .
充电
设定为 true,然后膨胀(压缩)而膨胀
false,减肥后的身体被拒绝。 默认为 true。 。 。 .
限制
控制最大请求体积。 如果这是数字, 那么值
指定字节数;如果是字符串,则将数值传递给
字节 用于解析的库。 默认
改为 '100kb'。 。 。 .
类型
这个 type 选项用于确定中间软件的介质类型
剖析。 此选项可以是函数或字符串 。 如果一个弦, type 选项
直接传递给 类型是
库和此选项可以是扩展名( 如 txt),一种mime类型(如:
text/plain),或带有通配符的mime类型(如 */* 或者说 text/*) (中文(简体) ).
如果一个函数,则 type 选项称为 fn(req) 请求是
如果返回一个真实值, 解析 。 默认为 text/plain。 。 。 .
校验
这个 verify 选项,如果提供,则称为 verify(req, res, buf, encoding), (中文(简体) ),
地点 buf 是一个 Buffer 原始请求体和 encoding 这是
请求的编码。 解析可以通过扔出错误来中止 .
bodyParser.urlencoded( 选项)
返回只解析的中间软件 urlencoded 尸体 尸体 尸体 尸体 尸体 此解析器接受
只有身体的UTF-8编码,并支持自动膨胀 gzip
财务报告和审定财务报表 deflate 编码.
一个新的 body 包含解析数据的对象在 request
中间软件(即:. req.body) (中文(简体) ). 此对象将包含
键值对,其中值可以是字符串或数组(当 extended 实值
false),或任何类型(何时) extended 实值 true) (中文(简体) ).
选项
这个 urlencoded 函数选择选项 options 可能包含的对象
下列任何一键:
延长
这个 extended 选项允许在解析 URL 编码数据时选择
与 querystring 库( 当 false)或为: qs 库( 当
true) (中文(简体) ). “ 扩展” 语法允许丰富的对象和阵列
编码到 URL 编码格式,允许类似 JSON 的经验
使用 URL 编码。 详情请问
参见 qs 库。 。 。 .
默认为 true,但使用默认值已贬值。 请
研究与研究 qs 财务报告和审定财务报表 querystring 选择
适当的设置.
充电
设定为 true,然后膨胀(压缩)而膨胀
false,减肥后的身体被拒绝。 默认为 true。 。 。 .
限制
控制最大请求体积。 如果这是数字, 那么值
指定字节数;如果是字符串,则将数值传递给
字节 用于解析的库。 默认
改为 '100kb'。 。 。 .
参数范围
这个 parameterLimit 选项控制参数的最大数量
允许在 URL 编码数据中。 如果请求包含更多参数
超过此值,413将返回客户端。 默认为 1000。 。 。 .
类型
这个 type 选项用于确定中间软件的介质类型
剖析。 此选项可以是函数或字符串 。 如果一个弦, type 选项
直接传递给 类型是
库和此选项可以是扩展名( 如 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 这是
请求的编码。 解析可以通过扔出错误来中止 .
错误
此模块提供的中间软件根据错误产生错误
解析时的条件。 错误通常有: status 属性
包含建议的 HTTP 响应代码和一个 body 包含属性
读取体,如果有的话.
以下是常见错误, 尽管任何错误都可以通过 出于各种原因.
不支持的内容编码
当请求中出现 Content-Encoding 标题
包含编码,但“通货膨胀”选项被设定为 false编辑
status 属性设定为 415。 。 。 .
请求已中止
当客户端在读取前中止请求时, 此错误将发生
身体结束了。 这个 received 属性将被设定为
请求中止前收到的字节数 expected 属性是
设置为预期字节数。 这个 status 属性设定为 400。 。 。 .
请求实体太大
当请求主体的大小大于"限制"时,这个错误将发生
选项。 这个 limit 属性将被设定为字节限制和 length
属性将被设定为请求对象的长度 。 这个 status 属性是
设置为 413。 。 。 .
请求大小与内容长度不符
此错误将发生在请求的长度与时间长度不符时
页:1 Content-Length 头曰. 这通常发生在请求不正确时,
通常在 Content-Length 信头是根据字符计算的
而不是字节。 这个 status 属性设定为 400。 。 。 .
不应设置流编码
此错误将发生在名为 req.setEncoding 前一个方法
这个中间的软件。 此模块仅在字节上直接运行, 您无法
调用 req.setEncoding 当使用此模块时。 这个 status 属性设定为
500。 。 。 .
不支持的字符集“ BOGUS ”
当请求中包含字符集参数时,此错误将发生
Content-Type 标题,但 iconv-lite 模块不支持它 OR
parser 不支持它。 字符集也包含在信息中
和《公约》中 charset 属性。 这个 status 属性设定为 415。 。 。 .
不支持的内容编码"bogus"
当请求中出现 Content-Encoding 标题
包含一个不支持的编码。 编码包含在信件中
以及《公约》 encoding 属性。 这个 status 属性设定为 415。 。 。 .
实例
特快/连通顶级通用
此示例显示添加一个通用 JSON 和 URL 编码解析器为 顶级中间软件,将解析所有收到的请求的正文. 这是最简单的设定.
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
app.use(function (req, res) {
res.setHeader('Content-Type', 'text/plain')
res.write('you posted:\n')
res.end(JSON.stringify(req.body, null, 2))
})
特快路线
这个例子表明,在路径中专门添加了正体解析器 需要他们。 一般来说,这是最推荐的方法 使用身体-parser与 快报.
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// create application/json parser
var jsonParser = bodyParser.json()
// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })
// POST /login gets urlencoded bodies
app.post('/login', urlencodedParser, function (req, res) {
if (!req.body) return res.sendStatus(400)
res.send('welcome, ' + req.body.username)
})
// POST /api/users gets JSON bodies
app.post('/api/users', jsonParser, function (req, res) {
if (!req.body) return res.sendStatus(400)
// create user in req.body
})
更改已接受的解析器类型
所有分析师都接受 type 选项,允许您更改
Content-Type 中间的软件会分析.
// parse various different custom JSON types as JSON
app.use(bodyParser.json({ type: 'application/*+json' }))
// parse some custom thing into a Buffer
app.use(bodyParser.raw({ type: 'application/vnd.custom-type' }))
// parse an HTML body into a string
app.use(bodyParser.text({ type: 'text/html' }))