express.text() 方法

预计阅读时间1 分 180 views

在 Express 应用程序中,我们经常需要处理来自客户端的请求体(payload)。当请求体是文本形式时,我们可以使用 express.text() 中间件来解析它。这个中间件是 Express v4.17.0 及以上版本中的内置功能,基于 body-parser 库。

一、如何使用 express.text()

首先,你需要引入 Express 库,并创建一个 Express 应用实例。然后,你可以简单地调用 express.text() 方法来创建一个新的中间件函数,并将其添加到应用的中间件堆栈中。

const express = require('express');
const app = express();

app.use(express.text());

app.post('/text-parser', (req, res) => {
  const textBody = req.body;
  console.log(textBody);
  // 处理请求体...
});

在这个例子中,任何发送到 /text-parser 路由的 POST 请求都会被解析为文本,并且可以在 req.body 中访问。

二、options 参数详解

express.text() 还接受一个可选的 options 对象,该对象可以配置解析过程的一些细节:

属性描述类型默认值
defaultCharset指定请求内容字符集的默认值,如果请求中的 Content-Type 头部未指定字符集。字符串“utf-8”
inflate启用或禁用处理被压缩(deflated)的请求体;如果禁用,被压缩的请求体会被拒绝。布尔值true
limit控制最大请求体大小。如果是数字,则值指定字节数;如果是字符串,则将值传递给 bytes 库进行解析。数字或字符串“100kb”
type用于确定中间件将解析哪种媒体类型。此选项可以是字符串、字符串数组或函数。如果不是函数,type 选项直接传递给 type-is 库,这可以是扩展名(如 txt)、MIME 类型(如 text/plain),或带有通配符的 MIME 类型(如 */*text/*)。如果是函数,type 选项作为 fn(req) 被调用,如果返回一个真值,请求就会被解析。字符串、字符串数组或函数“text/plain”
verify如果提供了此选项,则在解析过程中会被调用,格式为 verify(req, res, buf, encoding),其中 buf 是请求体原始内容的 Buffer,而 encoding 是请求编码。可以通过抛出错误来终止解析过程。函数undefined

三、注意事项

  • 在调用像 req.body.trim() 这样的字符串方法之前,测试 req.body 是否是字符串是推荐的做法。
  • 由于 req.body 的形状是基于用户输入的,因此所有属性和值都是不可信的,应该在信任之前进行验证。
分享此文档

express.text() 方法

或复制链接

本页目录