12 HTTP模块之处理请求和响应的内容

在上篇文章中,我们介绍了如何使用 Node.js 创建一个简单的 HTTP 服务器。在这篇文章中,我们将深入探讨如何处理请求和响应的内容。这是理解 Node.js HTTP 模块的核心部分,能够帮助我们构建更加复杂和功能丰富的应用。

处理 HTTP 请求

当客户端(如浏览器)向我们的服务器发送请求时,服务器会接收到一个请求对象。在 Node.js 中,我们可以利用 http 模块的 createServer 方法来处理这些请求。该方法接收两个参数:一个处理请求的回调函数和一个可选的对象。

请求对象

请求对象包含了请求的所有信息,比如请求方法、请求头和请求路径等。我们通常对 req.methodreq.url 非常感兴趣。

下面是一个简单示例,展示了如何处理 GET 和 POST 请求:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const http = require('http');

const server = http.createServer((req, res) => {
// 处理请求方法
if (req.method === 'GET') {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('这是一个 GET 请求');
} else if (req.method === 'POST') {
let body = '';
req.on('data', chunk => {
body += chunk.toString(); // 将 Buffer 转换为字符串
});
req.on('end', () => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end(`你发送的 POST 数据是: ${body}`);
});
} else {
res.writeHead(405, { 'Content-Type': 'text/plain' });
res.end('不支持的请求方法');
}
});

server.listen(3000, () => {
console.log('服务器正在监听 http://localhost:3000');
});

分析代码

在上面的代码中,我们创建了一个 HTTP 服务器并监听 3000 端口。根据 req.method 的值,我们可以判断请求的方法:

  • 如果是 GET 方法,返回一段文本。
  • 如果是 POST 方法,收集所有的数据块,并在 end 事件触发时响应包含数据的结果。
  • 对于其他方法,我们返回 405 状态码,表示不支持的请求方法。

处理 HTTP 响应

响应是指服务器如何返回数据给客户端。在处理 HTTP 响应时,我们需要设置正确的状态码和响应头信息,以及响应主体内容。

设置响应头

可以通过 res.writeHead 方法来设置响应头。该方法接收两个参数:状态码和一个对象,后者包含了响应头信息。

响应体

可以通过 res.end 方法结束响应,并可以传入响应体内容。

下面是一个完整的例子,演示如何返回 JSON 格式的数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const http = require('http');

const server = http.createServer((req, res) => {
// 处理请求路径
if (req.url === '/data' && req.method === 'GET') {
const jsonData = { message: '这是一个 JSON 响应', success: true };

// 设置响应头为 JSON 类型
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(jsonData)); // 发送 JSON 数据
} else {
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('未找到请求的资源');
}
});

server.listen(3000, () => {
console.log('服务器正在监听 http://localhost:3000');
});

在这个例子中,我们设置了一个 GET 请求,当访问 /data 路径时,返回 JSON 数据。这样,客户端将能以 JSON 格式接收数据。

小结

在这一篇中,我们学习了如何处理 HTTP 请求和响应的内容。掌握了如何获取请求信息,如何根据请求生成相应的响应内容。这是构建 Node.js 应用的核心技能。

下一篇文章中,我们将学习如何安装和使用 Express 框架,以减少在处理请求和响应时的复杂性。通过 Express,我们将能够以更加优雅和简洁的方式来处理 HTTP 请求和响应。确保继续关注!

12 HTTP模块之处理请求和响应的内容

https://zglg.work/node-js-you-need/12/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论