Tạo Server Cơ Bản trong Node.js
Trong Node.js, bạn có thể dễ dàng tạo một máy chủ HTTP để xử lý các yêu cầu từ client. Điều này thường được sử dụng để xây dựng API hoặc các ứng dụng web đơn giản mà không cần dùng đến các framework như Express.

1. Sử dụng module http
để tạo server
Tạo một server HTTP đơn giản
Node.js cung cấp module http
tích hợp sẵn để tạo một máy chủ. Để tạo một server cơ bản, bạn có thể làm như sau:
Ví dụ: Server trả về "Hello, World!"
const http = require("http");
// Tạo server
const server = http.createServer((req, res) => {
res.writeHead(200, { "Content-Type": "text/plain" });
res.end("Hello, World!");
});
// Lắng nghe trên cổng 3000
server.listen(3000, () => {
console.log("Server đang chạy tại http://localhost:3000");
});
Giải thích:
-
http.createServer(callback)
: Tạo một server HTTP. Callback này nhận vàoreq
(request) vàres
(response). -
res.writeHead(200, { "Content-Type": "text/plain" })
: Trả về mã trạng thái HTTP200 OK
với kiểu nội dung làtext/plain
. -
res.end("Hello, World!")
: Kết thúc response và gửi dữ liệu về client. -
server.listen(3000, callback)
: Server lắng nghe trên cổng3000
.
Chạy lệnh sau để khởi động server:
node server.js
Mở trình duyệt và truy cập http://localhost:3000, bạn sẽ thấy "Hello, World!" hiển thị trên màn hình.
2. Gửi và nhận dữ liệu từ client
Khi client gửi request đến server, ta có thể đọc dữ liệu từ request và trả về response tương ứng.
Xử lý request với nhiều route khác nhau
const http = require("http");
const server = http.createServer((req, res) => {
res.writeHead(200, { "Content-Type": "text/plain" });
if (req.url === "/") {
res.end("Trang chủ");
} else if (req.url === "/about") {
res.end("Giới thiệu về chúng tôi");
} else {
res.writeHead(404, { "Content-Type": "text/plain" });
res.end("404 - Không tìm thấy trang");
}
});
server.listen(3000, () => {
console.log("Server đang chạy tại http://localhost:3000");
});
Giải thích:
- Nếu truy cập
/
, server trả về"Trang chủ"
. - Nếu truy cập
/about
, server trả về"Giới thiệu về chúng tôi"
. - Nếu truy cập một đường dẫn không xác định, server trả về lỗi 404.
3. Nhận dữ liệu từ client (POST request)
Để nhận dữ liệu từ client (ví dụ: từ form HTML hoặc API request), ta cần lắng nghe dữ liệu gửi lên từ body của request.
Ví dụ: Nhận dữ liệu từ request POST
const http = require("http");
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", () => {
res.writeHead(200, { "Content-Type": "text/plain" });
res.end(`Dữ liệu nhận được: ${body}`);
});
} else {
res.writeHead(404, { "Content-Type": "text/plain" });
res.end("404 - Không tìm thấy trang");
}
});
server.listen(3000, () => {
console.log("Server đang chạy tại http://localhost:3000");
});
Giải thích:
- Kiểm tra nếu request method là
POST
và URL là/submit
. - Sử dụng
req.on("data", callback)
để lắng nghe dữ liệu gửi lên từ client. - Sử dụng
req.on("end", callback)
để xử lý khi dữ liệu được gửi hoàn tất. - Trả về dữ liệu nhận được cho client.
Gửi dữ liệu từ client bằng curl
curl -X POST -d "name=John&age=25" http://localhost:3000/submit
Kết quả server sẽ trả về:
Dữ liệu nhận được: name=John&age=25
4. Trả về dữ liệu JSON cho client
Ngoài text, server cũng có thể gửi JSON, đặc biệt hữu ích khi xây dựng API.
const http = require("http");
const server = http.createServer((req, res) => {
if (req.url === "/api") {
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify({ message: "Hello, JSON!" }));
} else {
res.writeHead(404, { "Content-Type": "text/plain" });
res.end("404 - Không tìm thấy trang");
}
});
server.listen(3000, () => {
console.log("Server đang chạy tại http://localhost:3000");
});
Truy cập http://localhost:3000/api
, bạn sẽ nhận được:
{
"message": "Hello, JSON!"
}
5. Kết luận
Chức năng | Mô tả |
---|---|
Tạo server HTTP | Sử dụng http.createServer() để tạo server. |
Xử lý request | Kiểm tra req.method và req.url để điều hướng. |
Gửi response | Dùng res.writeHead() và res.end() để gửi phản hồi. |
Nhận dữ liệu từ client | Lắng nghe req.on("data") và req.on("end") để nhận dữ liệu. |
Trả về JSON | Dùng JSON.stringify() và Content-Type: application/json . |
Với các kiến thức này, bạn có thể xây dựng một server HTTP cơ bản trong Node.js mà không cần framework.

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.
Xem thêm

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.
Liên hệ công việc qua email dưới đây.
lhvuctu@gmail.com