📅  最后修改于: 2023-12-03 15:38:49.584000             🧑  作者: Mango
在 Node.js 中,我们可以使用 HTTP 模块来处理来自客户端的请求。当客户端发送一个 HTTP 请求时,会包含一些信息,例如:请求方式、请求路径、查询参数等等。我们可以从这些信息中获取到客户端请求的相关信息,并根据这些信息来做出相应的响应,其中包括发送不同的 HTML 文件。
我们可以通过以下方式来获取客户端请求的查询参数:
const http = require('http');
const url = require('url');
const server = http.createServer((req, res) => {
const {pathname, query} = url.parse(req.url, true);
console.log(query); // 打印查询参数
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000');
});
在上述代码中,我们使用了 Node.js 的 url
模块来解析客户端请求的 URL,并从中获取到了查询参数。我们可以通过访问 http://localhost:3000/?name=张三&age=18
来测试这段代码。控制台会输出以下内容:
{ name: '张三', age: '18' }
接下来,我们可以根据获取到的查询参数来发送不同的 HTML 文件。考虑到我们的应用场景可能比较简单,这里我们将使用 fs
模块来读取本地的 HTML 文件并返回给客户端:
const http = require('http');
const url = require('url');
const fs = require('fs');
const server = http.createServer((req, res) => {
const {pathname, query} = url.parse(req.url, true);
if (pathname === '/') {
if (query.name === '张三') {
fs.readFile('./zhangsan.html', (err, data) => {
if (err) {
res.writeHead(500);
res.end('Server Error!');
} else {
res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
res.end(data);
}
});
} else if (query.name === '李四') {
fs.readFile('./lisi.html', (err, data) => {
if (err) {
res.writeHead(500);
res.end('Server Error!');
} else {
res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
res.end(data);
}
});
} else {
res.writeHead(404);
res.end('404 Not Found!');
}
} else {
res.writeHead(404);
res.end('404 Not Found!');
}
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000');
});
在上述代码中,我们首先判断客户端请求的路径是否为根路径。如果是根路径,则根据查询参数的不同来读取不同的 HTML 文件,并将文件内容作为响应发送给客户端。如果查询参数中不存在指定的名称,则返回 404 Not Found。
这是一个简单的根据查询参数发送不同 HTML 文件的示例,你可以根据需要修改代码,实现更加复杂的逻辑。