@d-fischer/raw-body

中文文档
2.4.3发布于 2020/10/04MITTypeScriptESM + CJS近 30 天下载 2529

获取并验证可读流的生体.

中文使用文档
文档目录12 节
  1. 安装
  2. 类型脚本
  3. API 密码
  4. getRawBody( 流、 [选项] 、 [召回])
  5. 错误
  6. 类型
  7. 实例
  8. 简单快递示例
  9. 简单 Koa 示例
  10. 当作承诺
  11. 使用类型脚本
  12. 许可证

生体( b)

NPM Version NPM Downloads Node.js Version Build status Test coverage

获得整个溪流缓冲器作为 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 - 用来解码身体的编码器. 默认a Buffer 实例将在未指定编码时返回. 最有可能,你喜欢 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);

许可证

麻省理工学院

版本与发布记录

@d-fischer/raw-body 共发布 2 个版本,首次发布于 2020/04/30;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.4.3latest2020/10/046 年前
2.4.22020/04/306 年前

关于 @d-fischer/raw-body 的常见问题

@d-fischer/raw-body 是什么?

获取并验证可读流的生体.

如何安装 @d-fischer/raw-body?

在项目目录运行 npm install @d-fischer/raw-body,或使用 pnpm add / yarn add / bun add。

@d-fischer/raw-body 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@d-fischer/raw-body 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@d-fischer/raw-body 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 0.8。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@d-fischer/raw-body 可以商用吗?

@d-fischer/raw-body 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@d-fischer/raw-body 的下载量有多少?

根据 npm 官方下载统计,@d-fischer/raw-body 在 2026/10/11 – 2026/11/09 这 30 天内被下载 2,529 次,日均约 84 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@d-fischer/raw-body 还在维护吗?

最新版本 2.4.3 发布于 2020/10/04(6 年前);至今共发布 2 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/04/30。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。