ExpressJs
Dưới đây là giải thích chi tiết cho từng phần bạn hỏi về Express.js và các khía cạnh liên quan trong Node.js:
1. Express.js là gì?
Express.js là một web framework nhẹ và linh hoạt cho Node.js, dùng để xây dựng các ứng dụng web và API. Nó trừu tượng hóa nhiều thao tác phức tạp của Node.js thuần (native) và cung cấp một bộ công cụ mạnh mẽ để xử lý HTTP request, middleware, routing, và nhiều thứ khác.
Tại sao Express.js phổ biến:
Đơn giản và dễ học: Cấu trúc và cú pháp rõ ràng.
Middleware mạnh mẽ: Cho phép xử lý tuần tự các logic nghiệp vụ.
Routing linh hoạt: Dễ dàng cấu hình các đường dẫn (URL).
Tích hợp với nhiều hệ thống: Dễ kết nối với DB, template engine, auth, v.v.
Cộng đồng lớn: Có nhiều tài liệu, package và hỗ trợ.
2. Middleware trong Express là gì?
Middleware trong Express là các hàm trung gian có thể can thiệp vào quá trình xử lý request/response. Chúng có quyền:
Truy cập req, res
Kết thúc response
Gọi tiếp middleware tiếp theo (next)
Cú pháp:
function middlewareExample(req, res, next) {
// xử lý logic ở đây
next(); // chuyển tiếp đến middleware tiếp theo
}
Ví dụ: Logging middleware
app.use((req, res, next) => {
console.log(`${req.method} ${req.url}`);
next();
});
Các loại middleware:
Application-level (
app.use
)Router-level (
router.use
)Built-in (như
express.json()
,express.static()
)Third-party (như
body-parser
,cors
,morgan
)
3. Routing trong Express hoạt động như thế nào?
Routing trong Express là cách để xác định các endpoint (URI) và phương thức HTTP tương ứng (GET, POST, PUT, DELETE...) mà ứng dụng phản hồi.
Cấu hình route cơ bản:
app.get('/hello', (req, res) => {
res.send('Hello World');
});
Hỗ trợ nhiều HTTP method:
app.post('/users', createUser);
app.put('/users/:id', updateUser);
app.delete('/users/:id', deleteUser);
Router nhóm (Modular Routing):
const router = express.Router();
router.get('/products', getAllProducts);
router.post('/products', createProduct);
app.use('/api', router);
4. Làm thế nào để xử lý lỗi trong Express?
Express hỗ trợ middleware riêng để xử lý lỗi. Khi một middleware hoặc route handler gọi next(err)
, Express sẽ chuyển sang middleware xử lý lỗi có dạng:
app.use((err, req, res, next) => {
console.error(err.stack); // log lỗi
res.status(500).json({ message: 'Something went wrong', error: err.message });
});
Nguyên tắc xử lý lỗi tốt:
Luôn có một middleware
error-handling
ở cuối.Luôn dùng
try/catch
trong cácasync
function.Tránh trả về stacktrace trong production.
Ví dụ dùng async/await
và try/catch
:
app.get('/users/:id', async (req, res, next) => {
try {
const user = await findUserById(req.params.id);
if (!user) throw new Error('User not found');
res.json(user);
} catch (err) {
next(err); // truyền lỗi đến middleware xử lý lỗi
}
});
✅ Tổng kết:
Tính năng
Mô tả
Express.js
Framework nhẹ để xây dựng ứng dụng web/API bằng Node.js.
Middleware
Hàm xử lý trung gian cho phép thao tác logic trước khi response được gửi.
Routing
Định tuyến các URL đến hàm xử lý phù hợp.
Xử lý lỗi
Dùng middleware cuối cùng với 4 đối số (err, req, res, next)
để đảm bảo ứng dụng không crash.
Last updated