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,