express.json() 方法

预计阅读时间1 分 364 views

在使用 Express 构建 RESTful API 时,我们经常会遇到需要解析客户端发送的 JSON 格式数据的情况。对此,Express 提供了一个名为 express.json() 的内置中间件,专门用于解析 JSON 格式的请求体。

一、express.json()

express.json() 是 Express 框架中的一个中间件函数,它能够解析传入的带有 JSON 负载的请求。这个中间件基于 body-parser 库实现,并在 Express v4.16.0 版本及以上可用。

二、如何使用 express.json()

使用 express.json() 非常简单。你只需要在应用的路由处理函数之前引入它即可。这样,任何经过该路由的请求都会被自动解析为 JSON 格式。

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

// 引入 express.json() 中间件
app.use(express.json());

app.post('/api/users', (req, res) => {
  // 在这里可以直接访问 req.body 来获取 JSON 数据
  const newUser = req.body;
  // 处理逻辑...

  res.status(201).json({ message: 'User created successfully' });
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

以上例子,当客户端向 /api/users 发送 POST 请求时,express.json() 会先解析请求体中的 JSON 数据,然后将其存储在 req.body 对象中。在路由处理函数内部,我们可以直接访问 req.body 来获取传递过来的数据。

三、可选参数 options 的属性

express.json() 还支持一些可选的配置选项,这些选项允许你自定义中间件的行为。

选项描述类型默认值
inflate启用或禁用处理被压缩(deflated)的请求体Booleantrue
limit控制最大请求体大小Mixed“100kb”
reviver传递给 JSON.parse 的第二个参数,用于在解析过程中修改数据Functionnull
strict是否只接受数组和对象Booleantrue
type用于确定中间件将解析哪种媒体类型Mixed“application/json”
verify如果提供此选项,则会在解析请求体之前调用它,允许你验证请求的有效性Functionundefined

四、注意事项

  • req.body 的内容基于用户输入,因此其属性和值都是不可信的。在信任这些数据之前,一定要进行充分的验证和校验。
  • 如果请求没有包含有效负载、Content-Type 不匹配或发生其他错误,则 req.body 将是一个空对象 {}

通过使用 express.json() 中间件,你可以轻松地在 Express 应用中解析 JSON 格式的请求体。

分享此文档

express.json() 方法

或复制链接

本页目录