在 Web 开发领域,HTTP 协议是所有网络通信的基础,而 Node.js 则以轻量高效的方式让开发者可以直接构建 HTTP 服务。相比传统服务器框架,Node.js 内置的
http
模块无需额外依赖,就能从零搭建一个 Web 服务器,这也是 Node.js 被广泛使用的重要原因之一。本篇将带你了解
http
模块的核心能力、常见使用方式以及实际开发中的关键点。
一、HTTP 模块的作用是什么?
http
模块是 Node.js 内置的网络模块,用于创建 Web 服务器与发起 HTTP 请求。它主要提供两类功能:
- •创建 HTTP 服务器(Server):处理客户端请求,返回响应内容。
- •创建 HTTP 客户端(Client):向其他服务器发送 HTTP 请求,如调用外部 API。
通过这个模块,你可以在没有任何框架的情况下完成最基础的 HTTP 通信。
二、用最简单的方式创建一个 HTTP 服务器
下面是一个最小可运行的 Node.js Web 服务器示例,只需要三行核心代码即可响应浏览器请求。
const http = require("http");const server = http.createServer((req, res) => { res.writeHead(200, { "Content-Type": "text/plain; charset=utf-8" }); res.end("你好,这是一台 Node.js HTTP 服务器!");});server.listen(3000, () => { console.log("服务器已启动:http://localhost:3000");});
运行后,你就拥有了一个基础 Web 服务,可以处理请求并返回页面内容。
三、理解请求(Request)与响应(Response)
在回调函数
(req, res)
中:
- •req 表示客户端请求
包含 URL、方法、请求头等信息例如:
req.method
、
req.url
- •res 表示返回给客户端的响应
可以设置响应头、响应内容并结束请求如:
res.write()
、
res.end()
示例:根据不同路径返回内容:
const server = http.createServer((req, res) => { if (req.url === "/") { res.end("首页"); } else if (req.url === "/api") { res.end(JSON.stringify({ message: "这是 API 接口" })); } else { res.statusCode = 404; res.end("页面不存在"); }});
这样的逻辑是所有 Web 框架(如 Express)的基础。
四、HTTP 模块的常用能力
1. 获取请求内容(包括 POST 数据)
处理 POST 请求通常要自己读取数据流:
let body = "";req.on("data", chunk => { body += chunk;});req.on("end", () => { console.log("收到数据:", body); res.end("已接收");});
这是因为 Node.js 的 HTTP 数据是基于流(Stream)的,适合处理大文件或实时数据。
2. 设置响应头
你可以定制响应类型、状态码、编码等:
res.writeHead(200, { "Content-Type": "application/json; charset=utf-8"});
例如 Web API 通常返回 JSON:
res.end(JSON.stringify({ code: 200, msg: "成功" }));
3. 作为客户端发起请求
Node.js 也可以主动去访问外部服务:
http.get("http://api.example.com/data", resp => { let data = ""; resp.on("data", chunk => { data += chunk; }); resp.on("end", () => { console.log("外部接口返回:", data); });});
相当于浏览器的
fetch()
,但这是纯 Node.js 实现。
五、HTTP 模块在实际项目中的应用
虽然现在项目多采用 Express、Koa、NestJS 等框架,但底层依然离不开
http
模块。它在以下场景中仍然非常重要:
- • 构建高性能微服务基础框架
- • 自定义底层网络协议
- • 开发中间层 API 网关
- • 实现负载均衡代理
- • 编写轻量级调试服务、Mock 服务
理解 HTTP 模块的工作方式,有助于你更好地掌握 Web 开发的底层机制。
六、总结
Node.js 内置的
http
模块让你无需依赖任何第三方库,就能构建一个完整的 Web 服务。它轻量、灵活、基于事件与流,非常适合高并发场景。熟练掌握 HTTP 模块,不仅能帮助你构筑属于自己的服务器,也能更深入理解 Express 等框架的内部运作方式。
如果你正在学习 Node.js 或编写相关书籍,这一章将为后续的 Web 框架、路由系统、API 开发等内容奠定重要基础。
4001102288 欢迎批评指正
All Rights Reserved 新浪公司 版权所有