HTTP 伺服器
HTTP 是瀏覽器與伺服器說話的規則:你打開一個網址(請求),對方回一段內容(回應)。Node.js 內建 node:http,不必先裝 Express 也能寫出最小伺服器。
最小範例
server.js:
import http from "node:http";
const server = http.createServer((request, response) => {
response.writeHead(200, { "Content-Type": "text/plain; charset=utf-8" });
response.end("來自 Node.js 的回應");
});
server.listen(3000, () => {
console.log("http://127.0.0.1:3000");
});
瀏覽器開啟 http://127.0.0.1:3000。終端機停在這支程式上是正常的,按 Ctrl+C 結束。
這支程式在做什麼
createServer:每次有人來訪就執行裡面的函式。request:對方要什麼,例如網址request.url、方法 GET / POST。response:你回什麼。200表示成功;Content-Type告訴瀏覽器這是純文字,並用 UTF-8 才不會中文亂碼。listen(3000):在本機 3000 連接埠等候。網址寫成http://127.0.0.1:3000。
之後學 Express 或 Fastify,只是把路由與錯誤處理寫得更省事,這四步不會變。
依路徑回應
import http from "node:http";
const server = http.createServer((request, response) => {
response.writeHead(200, { "Content-Type": "text/plain; charset=utf-8" });
if (request.url === "/time") {
response.end(new Date().toISOString());
return;
}
response.end("試試看 /time");
});
server.listen(3000);
request.url 是路徑部分(例如 /time),不是完整的 http://...。兩個 response.end 都要有,而且用 return 避免同一個請求被回兩次。
總結
內建 http 就能聽連接埠、看網址、回文字。先把最小伺服器跑起來,框架才學得進去。