生体( b)
获得整个溪流缓冲器作为 Buffer 或作弦相会.
对照预期长度和最大限度验证溪流长度.
想要分析请求机构.
安装
这是一个 节点.js 模块
npm 登记。安装使用
npm install 命令数字 :
$ npm install raw-body
类型脚本
本单元包括: 类型脚本
声明文件,以便自动完成兼容编辑器和类型
typeScript 项目的信息。 此模块依赖于节点.js
类型,所以安装 @types/node数字 :
$ npm install @types/node
API 密码
var getRawBody = require('raw-body')
getRawBody( 流、 [选项] 、 [召回])
如果没有指定回调和全局, 返回承诺 Promise 已存在.
选项 :
length- 溪流的长度. 如果溪流中的内容与这个长度不符, a 一个400返回错误代码 .limit- 身体的字节限制. 这是支持的字节或任意字符串格式的数目 字节, (中文(简体) ), 比如说1000, (中文(简体) ),'500kb'或者说'3mb'。 。 。 . 如果身体最终大于这个极限, (单位:千美元)413返回错误代码 .encoding- 用来解码身体的编码器. 默认aBuffer实例将在未指定编码时返回. 最有可能,你喜欢utf-8,所以设置encoding改为true将解码为utf-8。 。 。 . 您可以使用支持的任意类型的编码 图标-升。 。 。 .
您也可以通过一个字符串来代替选项来指定编码.
如果发生错误,流会被暂停,一切未接通,
你负责正确处理溪流.
对于 HTTP 请求,如果您发送回复,则不需要处理 .
对于使用文件描述符的流,您应当 stream.destroy() 或者说 stream.close() 防止泄漏.
错误
此模块根据读取时的错误条件而产生出错. 错误可能是基础节点.js执行错误,但 否则,该模块产生的错误,其属性如下:
limit- 以字节表示的限度length财务报告和审定财务报表expected- 溪流的预期长度received- 收到字节encoding- 无效的编码status财务报告和审定财务报表statusCode- 错误的相应状态代码type- 错误类型
类型
此模块的错误有: type 属性,允许公式化
确定返回的错误类型.
编码. 不支持
当 encoding 选项已指定,但数值确实
不映射到由该编码支持的编码 图标-升
模块.
实体也很大
当 limit 选项已指定,但流已
一个更大的实体.
请求
当请求流在客户端中止前发生此错误 读取身体已经完成.
请求. size.in valid
当 length 选项已指定,但流已
释放出更多字节 .
串流. encoding. set
当给定的溪流设置了编码后, 就会发生此错误
解码流。 溪流不应有编码集, 并且预计将
发射 Buffer 对象.
实例
简单快递示例
var contentType = require('content-type')
var express = require('express')
var getRawBody = require('raw-body')
var app = express()
app.use(function (req, res, next) {
getRawBody(req, {
length: req.headers['content-length'],
limit: '1mb',
encoding: contentType.parse(req).parameters.charset
}, function (err, string) {
if (err) return next(err)
req.text = string
next()
})
})
// now access req.text
简单 Koa 示例
var contentType = require('content-type')
var getRawBody = require('raw-body')
var koa = require('koa')
var app = koa()
app.use(function * (next) {
this.text = yield getRawBody(this.req, {
length: this.req.headers['content-length'],
limit: '1mb',
encoding: contentType.parse(this.req).parameters.charset
})
yield next
})
// now access this.text
当作承诺
用这个图书馆作为承诺,只是略去 callback 一个承诺是
返回,但需为全局 Promise 定义.
var getRawBody = require('raw-body')
var http = require('http')
var server = http.createServer(function (req, res) {
getRawBody(req)
.then(function (buf) {
res.statusCode = 200
res.end(buf.length + ' bytes submitted')
})
.catch(function (err) {
res.statusCode = 500
res.end(err.message)
})
})
server.listen(3000)
使用类型脚本
import * as getRawBody from 'raw-body';
import * as http from 'http';
const server = http.createServer((req, res) => {
getRawBody(req)
.then((buf) => {
res.statusCode = 200;
res.end(buf.length + ' bytes submitted');
})
.catch((err) => {
res.statusCode = err.statusCode;
res.end(err.message);
});
});
server.listen(3000);