Mở đầu
Trong bối cảnh công nghệ hiện nay, việc xây dựng các ứng dụng web và mobile thường đòi hỏi một hệ thống backend mạnh mẽ và linh hoạt. RESTful API đã trở thành tiêu chuẩn để kết nối giữa client và server, cho phép trao đổi dữ liệu một cách có cấu trúc và hiệu quả. Trong bài viết này, chúng ta sẽ khám phá cách xây dựng một RESTful API đơn giản nhưng hoàn chỉnh bằng Express.js và MongoDB, hai công nghệ phổ biến trong hệ sinh thái JavaScript.
Vì sao chọn Express.js và MongoDB?
Express.js là một framework nhẹ nhàng và linh hoạt cho Node.js, giúp lập trình viên xây dựng server-side nhanh chóng. Nó cung cấp các tính năng cơ bản như routing, middleware, và hỗ trợ nhiều plugins. MongoDB, mặt khác, là một cơ sở dữ liệu NoSQL phổ biến, cho phép lưu trữ dữ liệu dạng document (JSON-like), rất phù hợp với các ứng dụng hiện đại.
Kết hợp Express.js với MongoDB giúp tạo ra một hệ thống backend mạnh mẽ, dễ mở rộng và thân thiện với các ứng dụng client.
Cài đặt và chuẩn bị
Trước khi bắt đầu, bạn cần cài đặt Node.js và npm trên máy. Sau đó, tạo một project mới và cài đặt các package cần thiết:
npm init -y
npm install express mongoose body-parser
- express: framework web cho Node.js.
- mongoose: library giúp kết nối và làm việc với MongoDB.
- body-parser: middleware để parse request body.
Thiết lập kết nối MongoDB
Để kết nối với MongoDB, bạn có thể sử dụng dịch vụ MongoDB Atlas hoặc cài đặt local. Sau khi có URI, bạn thiết lập kết nối trong file server.js:
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const app = express();
mongoose.connect('mongodb://localhost:27017/mydb', {
useNewUrlParser: true,
useUnifiedTopology: true
});
app.use(bodyParser.json());
Quảng cáo
300x250 In-Content Advertisement
Định nghĩa Model với Mongoose
Với MongoDB, bạn cần định nghĩa schema cho dữ liệu. Ví dụ, nếu bạn xây dựng một API quản lý users, bạn có thể tạo file models/User.js:
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
name: String,
email: String,
age: Number
});
module.exports = mongoose.model('User', userSchema);
Xây dựng RESTful API
GET - Lấy danh sách users
app.get('/api/users', async (req, res) => {
try {
const users = await User.find();
res.json(users);
} catch (err) {
res.status(500).json({ message: err.message });
}
});
GET - Lấy user theo ID
app.get('/api/users/:id', async (req, res) => {
try {
const user = await User.findById(req.params.id);
if (!user) return res.status(404).json({ message: 'Not found' });
res.json(user);
} catch (err) {
res.status(500).json({ message: err.message });
}
});
POST - Tạo user mới
app.post('/api/users', async (req, res) => {
const user = new User({
name: req.body.name,
email: req.body.email,
age: req.body.age
});
try {
const newUser = await user.save();
res.status(201).json(newUser);
} catch (err) {
res.status(400).json({ message: err.message });
}
});
PUT - Cập nhật user
app.put('/api/users/:id', async (req, res) => {
try {
const user = await User.findById(req.params.id);
if (!user) return res.status(404).json({ message: 'Not found' });
user.name = req.body.name;
user.email = req.body.email;
user.age = req.body.age;
const updatedUser = await user.save();
res.json(updatedUser);
} catch (err) {
res.status(400).json({ message: err.message });
}
});
DELETE - Xóa user
app.delete('/api/users/:id', async (req, res) => {
try {
await User.findByIdAndDelete(req.params.id);
res.json({ message: 'Deleted successfully' });
} catch (err) {
res.status(500).json({ message: err.message });
}
});
Chạy server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(Server running on port ${PORT}));
Kết luận
Qua bài viết này, chúng ta đã cùng nhau xây dựng một RESTful API đơn giản nhưng đầy đủ chức năng với Express.js và MongoDB. Việc sử dụng các công nghệ này giúp tiết kiệm thời gian phát triển và tăng khả năng mở rộng cho ứng dụng. Hy vọng bài viết đã cung cấp cho bạn cái nhìn tổng quan và thực hành để bắt đầu dự án backend của riêng mình.