在 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.methodreq.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 開發等內容奠定重要基礎。