Node.js và Express.js: Từ Cơ Bản Đến Nâng Cao
Hướng dẫn toàn diện về Node.js và Express.js framework
Node.js và Express.js: Từ Cơ Bản Đến Nâng Cao
Node.js đã cách mạng hóa cách chúng ta phát triển ứng dụng server-side với JavaScript. Kết hợp với Express.js, bạn có thể xây dựng REST APIs mạnh mẽ một cách nhanh chóng.
Tại sao chọn Node.js?
Node.js mang đến:
- Single-threaded, non-blocking I/O: Hiệu suất cao cho I/O intensive operations
- NPM ecosystem: Hàng triệu packages sẵn sàng sử dụng
- JavaScript everywhere: Cùng một ngôn ngữ cho frontend và backend
Cài đặt và Setup
# Cài đặt Node.js (đã có sẵn npm)
node --version
npm --version
# Khởi tạo project
npm init -y
npm install express
Express.js Cơ Bản
const express = require('express');
const app = express();
const PORT = 3000;
// Middleware
app.use(express.json());
// Routes
app.get('/', (req, res) => {
res.json({ message: 'Hello World!' });
});
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
RESTful API Design
// GET all users
app.get('/api/users', (req, res) => {
// Logic to get users
});
// GET single user
app.get('/api/users/:id', (req, res) => {
const userId = req.params.id;
// Logic to get user by id
});
// POST create user
app.post('/api/users', (req, res) => {
const userData = req.body;
// Logic to create user
});
// PUT update user
app.put('/api/users/:id', (req, res) => {
const userId = req.params.id;
const userData = req.body;
// Logic to update user
});
// DELETE user
app.delete('/api/users/:id', (req, res) => {
const userId = req.params.id;
// Logic to delete user
});
Error Handling
// Global error handler
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({
error: 'Something went wrong!',
message: err.message
});
});
// 404 handler
app.use('*', (req, res) => {
res.status(404).json({ error: 'Route not found' });
});
Middleware và Authentication
// Custom authentication middleware
const authenticate = (req, res, next) => {
const token = req.headers.authorization;
if (!token) {
return res.status(401).json({ error: 'No token provided' });
}
// Verify token logic
try {
const decoded = jwt.verify(token, process.env.JWT_SECRET);
req.user = decoded;
next();
} catch (error) {
res.status(401).json({ error: 'Invalid token' });
}
};
// Sử dụng middleware
app.get('/api/protected', authenticate, (req, res) => {
res.json({ message: 'This is protected data', user: req.user });
});
Kết luận
Express.js là framework tuyệt vời để xây dựng REST APIs với Node.js. Với kiến thức này, bạn đã có thể bắt đầu xây dựng backend services của riêng mình.
Bài viết này là phần đầu tiên trong series về Node.js và Express. Trong các bài tiếp theo, chúng ta sẽ explore database integration và deployment strategies.