Middleware là các hàm xếp thành pipeline giữa request và response: request đi qua từng middleware theo thứ tự, mỗi cái có thể đọc/sửa request-response, kết thúc sớm (trả response luôn), hoặc chuyển tiếp cho middleware kế (trong Express là gọi next()). Cùng ý tưởng ở mọi framework: Express/Koa middleware, Django middleware, Laravel middleware, ASP.NET Core pipeline.
Việc hay đặt vào middleware — các mối quan tâm cắt ngang mọi route:
- Logging: ghi method, path, thời gian xử lý.
- Authentication: đọc token, gắn user vào request hoặc trả 401.
- CORS: trả header cho phép origin khác gọi API.
- Body parsing: parse JSON/form thành object.
- Rate limiting, nén response, error handler.
Thứ tự quyết định hành vi vì request chảy tuần tự qua pipeline:
- Body parser phải đứng trước handler đọc req.body — chưa parse thì body là undefined.
- Auth phải đứng trước route cần bảo vệ; đặt sau là route "hở".
- CORS đặt sớm để preflight OPTIONS được trả lời trước khi dính auth.
- Error handler đặt cuối (Express: middleware 4 tham số) để bắt được lỗi từ mọi tầng trước nó.
Đặt sai thứ tự là nhóm bug phổ biến: req.body undefined, endpoint quên bảo vệ, CORS chặn preflight.