18 处理请求和响应之响应JSON数据

在前一章中,我们讨论了如何处理 POST 请求,这使我们能够从客户端接收数据并进行处理。在这一章中,我们将深入探讨如何生成 JSON 格式的响应数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。

6.3 响应JSON数据

在现代的 Web 应用中,尤其是使用 Ajax 和前端框架时,客户端与服务器之间的数据交换通常采用 JSON 格式。Express.js 提供了很方便的工具来处理这类需求。

6.3.1 使用 res.json() 方法

在 Express.js 中,我们可以使用 res.json() 方法来发送 JSON 响应。这个方法将 JavaScript 对象转换为 JSON 字符串并发送给客户端,默认设置 Content-Typeapplication/json

案例:简单的 JSON 响应

假设我们有一个简单的启动项目,并且我们要创建一个返回用户信息的 API。以下是如何实现这一点:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const express = require('express');
const app = express();
const PORT = 3000;

// 定义一个 GET 路由
app.get('/user', (req, res) => {
// 模拟用户数据
const user = {
id: 1,
name: '张三',
age: 25,
email: 'zhangsan@example.com'
};

// 发送 JSON 响应
res.json(user);
});

// 启动服务器
app.listen(PORT, () => {
console.log(`服务器正在运行,访问地址: http://localhost:${PORT}`);
});

在这个例子中,当客户端发送 GET 请求到 /user 路由时,服务器将返回一个包含用户信息的 JSON 对象。使用 res.json(user) 方法不仅简单,而且确保将 Content-Type 设置为 application/json

6.3.2 响应数组数据

除了响应对象,我们也可以发送数组形式的 JSON 数据。这在返回多条记录时非常有用。

案例:返回用户列表

假设我们扩展我们的应用,返回多个用户的信息。请看以下代码:

1
2
3
4
5
6
7
8
9
10
11
app.get('/users', (req, res) => {
// 模拟用户列表数据
const users = [
{ id: 1, name: '张三', age: 25, email: 'zhangsan@example.com' },
{ id: 2, name: '李四', age: 30, email: 'lisi@example.com' },
{ id: 3, name: '王五', age: 22, email: 'wangwu@example.com' }
];

// 发送 JSON 响应
res.json(users);
});

现在,当我们访问 /users 路由时,返回的数据将会是一个包含多个用户对象的数组。

6.3.3 自定义响应状态码

除了发送 JSON 数据,我们有时还需要根据不同情况返回不同的 HTTP 状态码。我们可以通过以下方式设置状态码:

1
2
3
4
5
6
7
8
9
10
11
12
app.get('/user/:id', (req, res) => {
const userId = req.params.id;

// 假设我们没有找到用户
if (userId > 3) {
return res.status(404).json({ error: '用户未找到' });
}

// 返回找到的用户
const user = { id: userId, name: '张三' };
res.json(user);
});

在这个例子中,当请求的用户未找到时,我们使用 res.status(404) 设置状态码为 404 Not Found,并且返回一个包含错误信息的 JSON 对象。

6.3.4 总结

在本节中,我们学习了如何在 Express.js 中使用 res.json() 方法返回 JSON 数据。这对构建现代的 RESTful API 至关重要。通过灵活运用该方法,我们可以轻松返回单个对象、数组,甚至自定义 HTTP 状态码。

作为一个小结,处理请求和响应的能力使我们的应用更加动态和灵活,接下来我们将在下一章中讨论如何处理错误,以确保应用的稳定性和用户体验。

预告

在下一章中,我们将探讨错误处理的基本概念,学习如何更有效地处理应用中的各种错误。这对于创建一个健壮的 Web 应用程序至关重要。

18 处理请求和响应之响应JSON数据

https://zglg.work/expressjs-zero/18/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论