16 处理请求和响应

在上一个章节中,我们学习了如何创建和使用自定义中间件。自定义中间件是 Express.js 中的一个强大特性,它允许我们在请求处理流程中插入自定义逻辑。在本章的开始部分,我们将着重于处理客户端发来的 GET 请求。

6.1 处理GET请求

什么是GET请求?

GET 请求是最常用的 HTTP 方法之一,主要用于从服务器获取数据。当用户在浏览器中输入一个 URL 并访问时,浏览器会发送一个 GET 请求到指定的服务器。我们将在本节中学习如何在 Express.js 中处理这些请求。

设置路由以处理GET请求

在 Express.js 中,我们可以通过 app.get() 方法来定义一个处理 GET 请求的路由。下面是一个基本的示例:

1
2
3
4
5
6
7
8
9
10
11
12
const express = require('express');
const app = express();
const PORT = 3000;

// 处理GET请求
app.get('/hello', (req, res) => {
res.send('Hello, World!');
});

app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});

在这个示例中,当用户访问 http://localhost:3000/hello 时,服务器会返回字符串 Hello, World!

如何从请求中获取参数

在 GET 请求中,我们常常需要从请求中提取参数。Express.js 提供了 req.query 对象来方便地访问查询参数。查询参数是 URL 中以 ? 开始的部分。例如,在 URL http://localhost:3000/greet?name=John 中,name 是查询参数。

以下是一个处理查询参数的示例:

1
2
3
4
app.get('/greet', (req, res) => {
const name = req.query.name || 'Guest'; // 获取查询参数 name,若未提供则默认为 'Guest'
res.send(`Hello, ${name}!`);
});

当用户访问 http://localhost:3000/greet?name=John 时,服务器会返回 Hello, John!

路由参数

除了查询参数,Express 还支持路由参数,它们在 URL 路径中定义。我们可以在路由中使用冒号(:)来定义动态参数。以下是一个处理路由参数的示例:

1
2
3
4
app.get('/users/:id', (req, res) => {
const userId = req.params.id; // 获取路由参数 id
res.send(`User ID is ${userId}`);
});

如果用户访问 http://localhost:3000/users/123,服务器会返回 User ID is 123

处理GET请求的案例

接下来,我们将结合前面的知识,创建一个更复杂的 GET 请求处理示例。我们将构建一个简单的 API,返回用户的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
let users = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
];

app.get('/api/users', (req, res) => {
res.json(users); // 返回所有用户
});

app.get('/api/users/:id', (req, res) => {
const userId = parseInt(req.params.id);
const user = users.find(u => u.id === userId);

if (user) {
res.json(user); // 返回特定用户信息
} else {
res.status(404).send('User not found'); // 处理未找到的用户
}
});

现在,如果我们访问 http://localhost:3000/api/users,将返回所有用户的 JSON 数据。如果我们请求 http://localhost:3000/api/users/1,将获取到 Alice 的信息。如果请求的 ID 不存在,服务器将返回 404 状态和相应信息。

结尾

在本节中,我们了解了如何处理 GET 请求,包括如何使用查询参数和路由参数。掌握这些知识会帮助我们开发出更灵活和功能丰富的 Web 应用程序。

在下一节中,我们将继续研究如何处理 POST 请求,这是与处理数据提交密切相关的内容。

16 处理请求和响应

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

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论