全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-15 10 分钟 ✍️ juanwangdev

Node.js http HTTP 模块

http 模块提供 HTTP 服务器和客户端功能,是构建 Web 应用和网络通信的基础。

引入模块

JavaScript
const http = require('http');

创建 HTTP 服务器

JavaScript
const server = http.createServer((req, res) => {
  // req: 请求对象
  // res: 响应对象
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
});

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

请求对象 req

JavaScript
const server = http.createServer((req, res) => {
  // 请求方法
  console.log('方法:', req.method); // GET, POST, PUT, DELETE

  // 请求 URL
  console.log('URL:', req.url); // /path?query=value

  // 请求头
  console.log('Headers:', req.headers);

  // 解析 URL
  const url = new URL(req.url, `http://${req.headers.host}`);
  console.log('路径:', url.pathname);
  console.log('查询参数:', url.searchParams.get('name'));
});

响应对象 res

JavaScript
const server = http.createServer((req, res) => {
  // 设置状态码
  res.statusCode = 200;

  // 设置响应头
  res.setHeader('Content-Type', 'application/json');
  res.setHeader('X-Custom-Header', 'value');

  // 多个响应头
  res.writeHead(200, {
    'Content-Type': 'text/html',
    'Cache-Control': 'no-cache'
  });

  // 发送响应体
  res.write('<html><body>');
  res.write('<h1>Hello</h1>');
  res.end('</body></html>');

  // 或直接结束
  res.end('响应内容');
});

处理 POST 请求体

JavaScript
const server = http.createServer((req, res) => {
  if (req.method === 'POST') {
    let body = '';

    req.on('data', (chunk) => {
      body += chunk;
    });

    req.on('end', () => {
      console.log('请求体:', body);
      res.end('收到数据');
    });
  }
});

路径路由

JavaScript
const server = http.createServer((req, res) => {
  const url = new URL(req.url, `http://${req.headers.host}`);
  const path = url.pathname;

  if (path === '/') {
    res.end('首页');
  } else if (path === '/users') {
    res.end('用户列表');
  } else if (path === '/api/data') {
    res.setHeader('Content-Type', 'application/json');
    res.end(JSON.stringify({ data: 'test' }));
  } else {
    res.statusCode = 404;
    res.end('未找到');
  }
});

发送 HTTP 请求(客户端)

JavaScript
// 发送 GET 请求
http.get('http://example.com/api', (res) => {
  let data = '';

  res.on('data', (chunk) => {
    data += chunk;
  });

  res.on('end', () => {
    console.log('响应:', data);
  });
}).on('error', (err) => {
  console.error('错误:', err.message);
});

发送 POST 请求

JavaScript
const options = {
  hostname: 'example.com',
  port: 80,
  path: '/api',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  }
};

const req = http.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => data += chunk);
  res.on('end', () => console.log(data));
});

req.write(JSON.stringify({ name: 'test' }));
req.end();

req.on('error', (err) => {
  console.error('错误:', err.message);
});

服务器事件

JavaScript
const server = http.createServer();

server.on('request', (req, res) => {
  res.end('处理请求');
});

server.on('connection', (socket) => {
  console.log('新连接');
});

server.on('close', () => {
  console.log('服务器关闭');
});

server.on('error', (err) => {
  console.error('服务器错误:', err);
});

server.listen(3000);

要点总结

  • http.createServer 创建服务器,listen 启动监听
  • req 包含 method、url、headers 等请求信息
  • res 使用 statusCode、setHeader、end 发送响应
  • req.on('data') 接收请求体,res.on('data') 接收响应体
  • http.get/request 用于发送客户端请求

📝 发现内容有误?点击此处直接编辑

← 上一篇 Node.js fs 文件系统模块
下一篇 → Node.js path 路径模块
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库