Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Muốn trở thành lập trình viên backend, bước đầu tiên gần như luôn là tự viết một REST API. Với Node.js và Express, bạn có thể dựng một API quản lý danh sách sách chỉ trong khoảng nửa giờ, rồi dùng nó làm nền để học cơ sở dữ liệu, xác thực và triển khai.
Bạn cần cài Node.js phiên bản LTS (tải từ trang chủ nodejs.org). Sau khi cài, mở terminal và kiểm tra bằng hai lệnh node -v và npm -v. Nếu cả hai hiện ra số phiên bản là bạn đã sẵn sàng.
Tạo thư mục dự án và khởi tạo:
mkdir book-api
cd book-api
npm init -y
npm install expressTạo file index.js với nội dung sau. Đoạn code khởi tạo ứng dụng Express, bật chế độ đọc JSON từ request body và mở một route kiểm tra.
const express = require('express');
const app = express();
app.use(express.json());
app.get('/', (req, res) => {
res.json({ message: 'API đang chạy' });
});
const PORT = 3000;
app.listen(PORT, () => {
console.log('Server chạy tại http://localhost:' + PORT);
});Chạy node index.js, rồi mở trình duyệt vào http://localhost:3000. Bạn sẽ thấy chuỗi JSON trả về.
Để tập trung vào cách API hoạt động, ta tạm lưu dữ liệu trong một mảng. Khi tắt server, dữ liệu mất, nhưng đổi sang cơ sở dữ liệu thật sau này chỉ cần thay phần truy xuất.
let books = [
{ id: 1, title: 'Lập trình căn bản', author: 'Nguyễn An' },
{ id: 2, title: 'Học Node.js', author: 'Trần Bình' }
];
let nextId = 3;CRUD gồm Create, Read, Update, Delete, tương ứng các phương thức HTTP POST, GET, PUT và DELETE. Thêm đoạn sau vào trước dòng app.listen.
// Lấy danh sách
app.get('/books', (req, res) => {
res.json(books);
});
// Lấy một cuốn
app.get('/books/:id', (req, res) => {
const book = books.find(b => b.id === Number(req.params.id));
if (!book) return res.status(404).json({ error: 'Không tìm thấy' });
res.json(book);
});
// Thêm mới
app.post('/books', (req, res) => {
const { title, author } = req.body;
if (!title || !author) {
return res.status(400).json({ error: 'Thiếu title hoặc author' });
}
const book = { id: nextId++, title, author };
books.push(book);
res.status(201).json(book);
});
// Cập nhật
app.put('/books/:id', (req, res) => {
const book = books.find(b => b.id === Number(req.params.id));
if (!book) return res.status(404).json({ error: 'Không tìm thấy' });
book.title = req.body.title ?? book.title;
book.author = req.body.author ?? book.author;
res.json(book);
});
// Xóa
app.delete('/books/:id', (req, res) => {
const index = books.findIndex(b => b.id === Number(req.params.id));
if (index === -1) return res.status(404).json({ error: 'Không tìm thấy' });
books.splice(index, 1);
res.status(204).end();
});Chú ý mã trạng thái HTTP: 201 khi tạo thành công, 400 khi dữ liệu gửi lên sai, 404 khi không tìm thấy và 204 khi xóa xong không cần trả nội dung. Dùng đúng mã trạng thái giúp phía client xử lý dễ hơn nhiều.
Bạn có thể dùng Postman, Insomnia hoặc lệnh curl. Ví dụ thêm một cuốn sách:
curl -X POST http://localhost:3000/books \
-H "Content-Type: application/json" \
-d '{"title":"Clean Code","author":"Robert Martin"}'Sau đó gọi GET /books để xem danh sách đã cập nhật. Thử gửi thiếu trường title để xem API báo lỗi 400 như mong đợi.
Bạn vừa dựng xong một API đủ bốn thao tác CRUD, có kiểm tra đầu vào và mã trạng thái chuẩn. Đây là khuôn mẫu mà hầu hết API thực tế đều dựa trên, chỉ khác ở quy mô và lớp lưu trữ.
Khi muốn đi sâu hơn về backend, từ cơ sở dữ liệu đến triển khai, bạn có thể xem các khóa học lập trình tại codebem.com.
Nguyễn Đình Cường
0 comment