raw-body是什么
raw-body的主要功能是处理HTTP请求体的原始数据。它提供了以下核心功能:
- 解析请求体:可以从HTTP请求中提取原始数据,包括文本和二进制数据。
- 配置选项:通过配置项,可以设置请求体的大小限制、编码方式等参数。
- 异常处理:模块能够处理异常情况,如请求体超出限制。
- 编码转换:支持将原始数据解码为指定编码的字符串,或者返回
Buffer实例。
express中的body-parser中间件就使用了raw-body来处理请求
raw-body基础用法
安装:
npm install raw-body
引入:
var getRawBody = require('raw-body')
getRawBody函数签名如下:
getRawBody(stream, [options], [callback])
stream是需要解析的流。
options是一些配置项。
length- 流的长度。limit- 请求体的大小限制。比如1000、'500kb'或'3mb'。encoding- 用于将请求体解码为字符串的编码。默认情况下,如果未指定编码,将返回Buffer实例。最有可能的是,您需要utf-8,因此将encoding设置为true将解码为utf-8
callback是解析完成之后的回调函数。
结合express一起使用的例子如下:
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()
})
})
// 可以在后续的express中间件中访问 req.text
也可以使用promise风格调用getRawBody:
var getRawBody = require('raw-body')
var http = require('http')
var server = http.createServer(function (req, res) {
getRawBody(req)
.then(function (buf) {

本文详细介绍了Node.js模块raw-body的功能,包括处理HTTP请求体的原始数据、配置选项、异常处理和编码转换。通过分析v0.0.3和v2.5.2两个版本的源码,探讨了onData、onEnd和cleanup等关键函数的实现,以及该模块如何处理数据流和错误。此外,还提到了raw-body依赖的其他模块及其作用。
522

被折叠的 条评论
为什么被折叠?



