第六章 Node核心模块http

52 阅读2分钟

HTTP(Hypertext Transfer Protocol)是用于传输超文本的协议,Node.js 提供了核心模块 http 来创建 HTTP 服务器和处理 HTTP 请求。下面是一个详细的解释和一个商业案例代码示例,展示了如何创建 HTTP 服务器、处理请求和发送响应。

1. 创建 HTTP 服务器

首先,您需要导入 Node.js 的 http 模块,然后使用 http.createServer() 方法创建一个 HTTP 服务器实例。这个服务器将监听特定的端口和主机。

const http = require('http');
​
const server = http.createServer((req, res) => {
  // 服务器逻辑将在这里定义
});

2. 服务器接受请求并处理

在服务器创建后,您需要定义在接收到 HTTP 请求时要执行的逻辑。通常,您会使用回调函数 (req, res),其中 req 是请求对象,res 是响应对象。

const server = http.createServer((req, res) => {
  // 处理请求的逻辑将在这里定义
  // 您可以访问 req 来获取请求信息,例如 req.url,req.method,req.headers 等// 设置响应头
  res.writeHead(200, { 'Content-Type': 'text/plain' });
​
  // 发送响应数据
  res.end('Hello, World!\n');
});

3. 响应处理结果并断开链接

在处理请求后,您可以使用 res.writeHead() 来设置响应头,然后使用 res.end() 来发送响应数据。最后,您可以调用 server.listen() 方法来指定服务器监听的端口和主机。

const server = http.createServer((req, res) => {
  // 处理请求的逻辑将在这里定义
  // 您可以访问 req 来获取请求信息,例如 req.url,req.method,req.headers 等// 设置响应头
  res.writeHead(200, { 'Content-Type': 'text/plain' });
​
  // 发送响应数据
  res.end('Hello, World!\n');
});
​
// 监听端口和主机
const port = 3000;
const host = '127.0.0.1';
​
server.listen(port, host, () => {
  console.log(`Server is running at http://${host}:${port}`);
});

这就是一个简单的 HTTP 服务器的创建、请求处理和响应发送的示例。

商业案例代码示例

商业案例:创建一个简单的 HTTP 服务器,监听指定端口,用于接收用户提交的表单数据,并在提交后向用户返回一个感谢页面。

javascriptCopy codeconst http = require('http');
const url = require('url');
const fs = require('fs');
​
const server = http.createServer((req, res) => {
  // 解析请求的 URL
  const parsedUrl = url.parse(req.url, true);
  const pathname = parsedUrl.pathname;
​
  if (pathname === '/') {
    // 处理根路径,返回表单页面
    res.writeHead(200, { 'Content-Type': 'text/html' });
    fs.readFile('form.html', (err, data) => {
      if (err) {
        res.writeHead(500, { 'Content-Type': 'text/plain' });
        res.end('Internal Server Error');
      } else {
        res.end(data);
      }
    });
  } else if (pathname === '/submit' && req.method === 'POST') {
    // 处理表单提交
    let body = '';
​
    req.on('data', (chunk) => {
      body += chunk.toString();
    });
​
    req.on('end', () => {
      res.writeHead(200, { 'Content-Type': 'text/html' });
      res.end(`<h1>Thank you for submitting: ${decodeURIComponent(body)}</h1>`);
    });
  } else {
    // 处理未知路径
    res.writeHead(404, { 'Content-Type': 'text/plain' });
    res.end('Not Found');
  }
});
​
const port = 3000;
const host = '127.0.0.1';
​
server.listen(port, host, () => {
  console.log(`Server is running at http://${host}:${port}`);
});

在这个案例中,我们创建了一个 HTTP 服务器,它会监听在 127.0.0.1:3000 上。当用户访问根路径 / 时,服务器会返回一个简单的表单页面。用户可以在表单中输入数据并提交。当用户提交表单时,服务器会接收 POST 请求,解析请求体,并返回一个包含用户输入数据的感谢页面。

这是一个基本的商业案例,展示了如何创建一个简单的 HTTP 服务器并处理用户请求。根据实际需求,您可以进一步扩展和定制此服务器。