Hướng dẫn tạo API REST với Node.js và Express

04/03/2026 P T P Chung 6 phút đọc 0 bình luận

Mở đầu

Trong thế giới phát triển phần mềm hiện đại, khả năng xây dựng một API REST mạnh mẽ là kỹ năng không thể thiếu. API REST (Representational State Transfer) là kiến trúc phổ biến để thiết kế các dịch vụ web, cho phép các ứng dụng khác nhau giao tiếp với nhau qua giao thức HTTP. Node.js và Express.js là hai công nghệ được ưa chuộng để xây dựng API REST nhanh chóng và hiệu quả. Bài viết này sẽ hướng dẫn chi tiết cách tạo một API REST với Node.js và Express, từ những bước cơ bản nhất đến các kỹ thuật nâng cao.

Chuẩn bị môi trường

Để bắt đầu, bạn cần cài đặt Node.js trên máy. Sau khi cài đặt xong, mở terminal và tạo một thư mục mới cho dự án:

mkdir node-api-example
cd node-api-example
npm init -y

Tiếp theo, cài đặt Express và các thư viện cần thiết:

npm install express body-parser cors
body-parser giúp xử lý dữ liệu JSON trong request, còn cors cho phép API của bạn được gọi từ các domain khác nhau.

Xây dựng API cơ bản

Tạo file server.js và khai báo các module:

const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');

const app = express(); app.use(bodyParser.json()); app.use(cors());

const PORT = 3000; app.listen(PORT, () => { console.log(Server đang chạy trên cổng ${PORT}); });

Bây giờ, hãy định nghĩa một mảng dữ liệu mẫu và các route cơ bản:

let users = [
    { id: 1, name: 'Alice', email: '[email protected]' },
    { id: 2, name: 'Bob', email: '[email protected]' }
];

// GET all users app.get('/api/users', (req, res) => { res.json(users); });

// GET user by ID app.get('/api/users/:id', (req, res) => { const user = users.find(u => u.id === parseInt(req.params.id)); if (!user) return res.status(404).json({ message: 'User not found' }); res.json(user); });

// POST new user app.post('/api/users', (req, res) => { const newUser = { id: users.length + 1, name: req.body.name, email: req.body.email }; users.push(newUser); res.status(201).json(newUser); });

// PUT update user app.put('/api/users/:id', (req, res) => { const user = users.find(u => u.id === parseInt(req.params.id)); if (!user) return res.status(404).json({ message: 'User not found' });

user.name = req.body.name; user.email = req.body.email; res.json(user); });

// DELETE user app.delete('/api/users/:id', (req, res) => { const index = users.findIndex(u => u.id === parseInt(req.params.id)); if (index === -1) return res.status(404).json({ message: 'User not found' });

Quảng cáo

300x250 In-Content Advertisement

users.splice(index, 1); res.json({ message: 'User deleted' }); });

Xử lý lỗi và validation

Để API trở nên chuyên nghiệp hơn, bạn cần thêm validation và xử lý lỗi một cách có hệ thống:

const { check, validationResult } = require('express-validator');

app.post('/api/users', [ check('name').notEmpty().withMessage('Tên không được để trống'), check('email').isEmail().withMessage('Email không hợp lệ') ], (req, res) => { const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(400).json({ errors: errors.array() }); }

// ... tiếp tục logic tạo user });

Kết nối với cơ sở dữ liệu

Thay vì dùng mảng tĩnh, bạn có thể kết nối với MongoDB hoặc MySQL. Ví dụ với MongoDB:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/mydb', { useNewUrlParser: true, useUnifiedTopology: true });

const userSchema = new mongoose.Schema({ name: String, email: String });

const User = mongoose.model('User', userSchema);

Các route sẽ được cập nhật để tương tác với database thay vì mảng.

Kết luận

Việc xây dựng API REST với Node.js và Express không chỉ đơn giản mà còn rất linh hoạt. Từ một API cơ bản, bạn có thể mở rộng với middleware, authentication, logging, và nhiều tính năng khác. Điều quan trọng là hiểu rõ các nguyên tắc REST và thiết kế API một cách nhất quán. Hy vọng hướng dẫn này giúp bạn tự tin bắt tay vào xây dựng những ứng dụng web mạnh mẽ.

Quảng cáo

728x90 Bottom Advertisement

Thay thế bằng mã Google AdSense

Chia sẻ bài viết

Facebook Twitter

Bình luận

Chia sẻ ý kiến của bạn về bài viết này

Viết bình luận

Bình luận của bạn sẽ được kiểm duyệt trước khi hiển thị

Chưa có bình luận nào

Hãy là người đầu tiên bình luận về bài viết này!