23 Node.js 处理请求和响应

23 Node.js 处理请求和响应

Node.js 非常适合处理 HTTP 请求和响应。在本节中,我们将通过示例了解如何使用 Node.js 创建一个简单的 HTTP 服务器,并处理请求和响应。

创建基础 HTTP 服务器

首先,我们需要使用 Node.js 创建一个 HTTP 服务器。Node.js 的 http 模块提供了创建服务器所需的功能。

1
2
3
4
5
6
7
8
9
10
11
12
const http = require('http');

const server = http.createServer((req, res) => {
res.statusCode = 200; // 设置状态码为 200
res.setHeader('Content-Type', 'text/plain'); // 设置响应头
res.end('Hello, World!\n'); // 结束响应并发送数据
});

const PORT = 3000;
server.listen(PORT, () => {
console.log(`服务器正在运行,监听端口 ${PORT}`);
});

在上面的代码中,我们使用 http.createServer 创建了一个服务器。这个服务器会监听传入的请求,并使用回调函数来处理它们。

处理不同的请求方法

在实际应用中,我们经常需要根据请求的方法来执行不同的逻辑。常见的方法有 GETPOST

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
26
27
28
29
const http = require('http');

const server = http.createServer((req, res) => {
if (req.method === 'GET') {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('这是一个 GET 请求\n');
} else if (req.method === 'POST') {
let body = '';

req.on('data', chunk => {
body += chunk.toString(); // 将数据块转换为字符串
});

req.on('end', () => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({ message: '这是一个 POST 请求', data: body }));
});
} else {
res.statusCode = 405; // 方法不允许
res.end('方法不允许\n');
}
});

const PORT = 3000;
server.listen(PORT, () => {
console.log(`服务器正在运行,监听端口 ${PORT}`);
});

在这个示例中,我们处理了 GETPOST 请求。对于 POST 请求,我们使用了事件监听器来收集数据,直到接收到所有数据块。

解析请求 URL

我们可以使用 Node.js 的 url 模块来解析请求的 URL。这样可以根据不同的路径提供不同的响应。

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

const server = http.createServer((req, res) => {
const parsedUrl = url.parse(req.url, true);
const pathname = parsedUrl.pathname;

if (pathname === '/hello') {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('你好,欢迎访问 /hello!\n');
} else {
res.statusCode = 404;
res.setHeader('Content-Type', 'text/plain');
res.end('未找到该路径\n');
}
});

const PORT = 3000;
server.listen(PORT, () => {
console.log(`服务器正在运行,监听端口 ${PORT}`);
});

在这段代码中,我们使用 url.parse 解析请求的 URL,并根据请求的路径做出不同的响应。

处理查询字符串

我们还可以处理 URL 中的查询字符串,以更灵活地响应请求。

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

const server = http.createServer((req, res) => {
const parsedUrl = url.parse(req.url, true);
const query = parsedUrl.query;

if (parsedUrl.pathname === '/greet') {
const name = query.name || '游客'; // 获取查询参数
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end(`你好,${name}!\n`);
} else {
res.statusCode = 404;
res.end('未找到该路径\n');
}
});

const PORT = 3000;
server.listen(PORT, () => {
console.log(`服务器正在运行,监听端口 ${PORT}`);
});

在此示例中,我们处理了一个名为 /greet 的路径,并根据查询字符串中的 name 参数做出个性化的回应。

小结

到这里,我们简单地介绍了如何使用 Node.js 处理 HTTP 请求和响应。通过创建服务器、处理不同的方法、解析 URL 和查询字符串,我们可以构建出功能强大的网络应用程序。希望通过这些示例能帮助你更好地掌握 Node.js 的请求和响应处理。

23 Node.js 处理请求和响应

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

作者

AI教程网

发布于

2024-08-09

更新于

2024-08-10

许可协议