Middleware là function có signature (req, res, next), chạy tuần tự đúng theo thứ tự đăng ký — và thứ tự ở đây là tuyệt đối.
- App-level:
app.use(helmet())áp cho toàn bộ app. - Router-level:
router.use(authMiddleware)chỉ áp cho nhóm route đó. - Error-handling: nhận 4 tham số
(err, req, res, next)và phải đăng ký SAU tất cả route.
Luồng đi: next() chuyển sang middleware kế tiếp; next(err) nhảy thẳng tới error handler, bỏ qua mọi middleware thường; còn không gọi next() mà cũng không res.send() thì request treo vô hạn.
Hệ sinh thái bên thứ ba đáng dùng: helmet (security header), morgan (logging), compression (gzip), passport (chiến lược auth).
Lưu ý: đặt express.json() sau route handler thì req.body thành undefined; đặt cors() sau route thì preflight OPTIONS trả về 404.