⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Node.js HTTP

学习HTTP模块 · 难度:入门 · +10XP

Node.js HTTP 模块

Node.js 内置的 http 模块 让你无需依赖任何第三方框架(如 Express)就能创建 Web 服务器和发起 HTTP 请求。http 模块基于事件驱动模型,能够高效处理大量并发连接。通过学习 http 模块,你将深入理解 Web 服务器的工作原理,这是成为 Node.js 高级开发者的必经之路。

创建 HTTP 服务器

使用 http.createServer() 创建服务器实例,它接受一个请求处理函数(回调),该函数在每次收到 HTTP 请求时被调用。处理函数接收两个参数:req(IncomingMessage,请求信息)和 res(ServerResponse,响应方法)。

const http = require('http');

const server = http.createServer((req, res) => { const { method, url, headers } = req;

console.log([${new Date().toISOString()}] ${method} ${url});

// 设置响应头 res.setHeader('Content-Type', 'text/html; charset=utf-8');

if (url === '/') { res.statusCode = 200; res.end('<h1>欢迎来到首页</h1>'); } else if (url === '/api/data') { res.setHeader('Content-Type', 'application/json'); res.end(JSON.stringify({ status: 'ok', time: Date.now() })); } else { res.statusCode = 404; res.end('<h1>404 - 页面未找到</h1>'); } });

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

处理 POST 请求与请求体

数据格式Content-Type解析方式
JSONapplication/json拼接 buffer 后用 JSON.parse()
表单 URL 编码application/x-www-form-urlencoded使用 querystring 模块解析
多部分表单(文件上传)multipart/form-data使用 busboyformidable
纯文本text/plain直接读取为字符串
const http = require('http');
const { parse } = require('querystring');

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

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

req.on('end', () => { const parsed = parse(body); console.log('收到表单数据:', parsed); res.setHeader('Content-Type', 'text/html; charset=utf-8'); res.end(&lt;h2&gt;提交成功!你好,${parsed.name}&lt;/h2&gt;); }); } else { res.statusCode = 200; res.setHeader('Content-Type', 'text/html; charset=utf-8'); res.end( &lt;form method="POST" action="/submit"&gt; &lt;input name="name" placeholder="输入名字" /&gt; &lt;button type="submit"&gt;提交&lt;/button&gt; &lt;/form&gt; ); } });

server.listen(3000);

发起 HTTP 客户端请求

http 模块不仅可以创建服务器,还可以作为 HTTP 客户端向其他服务器发起请求。通过 http.get()http.request() 方法,你可以调用外部 API、抓取网页、下载文件等。

  1. 使用 http 模块创建一个简易的静态文件服务器,根据 URL 返回对应的 HTML 文件
  2. 为服务器添加路由,分别处理 GET /users(返回用户列表 JSON)和 POST /users(接收新用户数据)
  3. 实现一个简单的 API 代理:将前端的请求转发到另一个 API 服务器,并将响应返回给前端
  4. 使用 http.get() 抓取某个公开 API 的数据,解析后输出到控制台
  5. 将 POST 数据写入本地 JSON 文件,实现一个持久化的简易数据存储服务
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 135 篇
0 完成
🔥 0