📜  如何根据 Node.js 中的查询参数发送不同的 HTML 文件?(1)

📅  最后修改于: 2023-12-03 15:38:49.584000             🧑  作者: Mango

如何根据 Node.js 中的查询参数发送不同的 HTML 文件?

在 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 文件的示例,你可以根据需要修改代码,实现更加复杂的逻辑。