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 là các phần dùng chung cho mọi route (cross-cutting): logging, authentication, CORS, body parsing, rate limiting, nén response, error handler.
Thứ tự quyết định hành vi vì request đi tuần tự qua pipeline:
- Body parser đứng trước handler đọc req.body — chưa parse thì body là undefined.
- Auth đứng trước route cần bảo vệ; đặt sau thì route không được bảo vệ.
- 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 lỗi từ mọi tầng trước nó.
Lỗi hay gặp: req.body undefined, endpoint quên bảo vệ, CORS chặn preflight — đều do đặt sai thứ tự.