express.json() 方法
在使用 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)的请求体 | Boolean | true |
limit | 控制最大请求体大小 | Mixed | “100kb” |
reviver | 传递给 JSON.parse 的第二个参数,用于在解析过程中修改数据 | Function | null |
strict | 是否只接受数组和对象 | Boolean | true |
type | 用于确定中间件将解析哪种媒体类型 | Mixed | “application/json” |
verify | 如果提供此选项,则会在解析请求体之前调用它,允许你验证请求的有效性 | Function | undefined |
四、注意事项
req.body
的内容基于用户输入,因此其属性和值都是不可信的。在信任这些数据之前,一定要进行充分的验证和校验。- 如果请求没有包含有效负载、Content-Type 不匹配或发生其他错误,则
req.body
将是一个空对象{}
。
通过使用 express.json()
中间件,你可以轻松地在 Express 应用中解析 JSON 格式的请求体。