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ẽ.