Middleware (phần mềm trung gian) là lớp phần mềm kết nối các thành phần trong hệ thống, xử lý request trước khi đến ứng dụng chính. Bài viết giải thích cách hoạt động, phân loại, ứng dụng trong REST API và ví dụ thực tế với Laravel.
Proxy tốc độ cao – Sẵn sàng dùng thử?
ALGO Proxy cung cấp proxy residential, datacenter và 4G tại 195+ quốc gia
Middleware là gì?

Middleware (phần mềm trung gian) là lớp phần mềm nằm giữa hệ điều hành, cơ sở dữ liệu và ứng dụng. Nó đóng vai trò cầu nối giúp các thành phần khác nhau trong hệ thống giao tiếp và trao đổi dữ liệu, bất kể ngôn ngữ lập trình hay nền tảng.
Khái niệm middleware xuất hiện từ những năm 1980 khi các hệ thống doanh nghiệp cần tích hợp nhiều ứng dụng trên các nền tảng khác nhau. Thay vì mỗi ứng dụng tự xử lý kết nối, middleware cung cấp lớp trừu tượng chung — giảm độ phức tạp và tăng khả năng mở rộng.
Trong phát triển web hiện đại, middleware thường chỉ cơ chế xử lý request/response trong các framework như Express.js, Laravel, Django — chặn và xử lý HTTP request trước khi đến controller.
Cách hoạt động

Middleware hoạt động theo mô hình pipeline (chuỗi xử lý):
- Client gửi HTTP request đến server.
- Middleware 1 chặn request → thực hiện xử lý (VD: kiểm tra CORS).
- Middleware 2 tiếp tục xử lý (VD: xác thực JWT token).
- Middleware 3 xử lý tiếp (VD: logging, rate limiting).
- Controller nhận request đã qua middleware, thực thi logic nghiệp vụ.
- Response đi ngược qua middleware pipeline trước khi trả về client.
Mỗi middleware có thể:
- Chuyển tiếp request đến middleware tiếp theo (gọi
next()). - Chặn request và trả response ngay (VD: 401 Unauthorized).
- Biến đổi request/response (thêm header, transform dữ liệu).
Phân loại middleware

| Loại | Chức năng | Ví dụ |
|---|---|---|
| Message-Oriented (MOM) | Truyền tin nhắn bất đồng bộ giữa các hệ thống | RabbitMQ, Apache Kafka, ActiveMQ |
| Database Middleware | Kết nối ứng dụng với nhiều loại database | ODBC, JDBC, Sequelize |
| Application Server | Cung cấp môi trường thực thi ứng dụng | Tomcat, WildFly, IIS |
| API/Integration | Kết nối và quản lý API giữa các dịch vụ | MuleSoft, Apache Camel, Kong |
| Web Middleware | Xử lý HTTP request trong web framework | Express middleware, Laravel middleware |
| RPC Middleware | Gọi hàm từ xa giữa các hệ thống | gRPC, XML-RPC, JSON-RPC |
Middleware trong REST API

Trong REST API, middleware xử lý các tác vụ chung tách biệt khỏi logic nghiệp vụ:
| Middleware | Chức năng | Ví dụ |
|---|---|---|
| Authentication | Xác thực người dùng qua JWT, OAuth, API Key | passport.js, jwt-auth |
| Authorization | Kiểm tra quyền truy cập tài nguyên | Role-based, Policy-based |
| Validation | Validate dữ liệu đầu vào | express-validator, Form Request |
| Rate Limiting | Giới hạn số request trong khoảng thời gian | express-rate-limit, throttle |
| CORS | Cho phép request từ domain khác | cors middleware |
| Logging | Ghi log request/response | morgan, monolog |
| Compression | Nén response để giảm bandwidth | compression, gzip |
| Error Handling | Xử lý lỗi tập trung | Error middleware |
Ví dụ middleware xác thực trong Express.js:
const authMiddleware = (req, res, next) => {
const token = req.headers.authorization?.split(' ')[1];
if (!token) return res.status(401).json({ error: 'Token required' });
try {
req.user = jwt.verify(token, process.env.JWT_SECRET);
next(); // Chuyển đến middleware/controller tiếp theo
} catch (err) {
res.status(403).json({ error: 'Invalid token' });
}
};
app.get('/api/profile', authMiddleware, profileController);
Middleware trong Laravel

Laravel tích hợp middleware mạnh mẽ vào HTTP pipeline, chia thành 3 cấp:
- Global Middleware: Chạy cho mọi request (VD:
TrustProxies,HandleCors). - Route Middleware: Gán cho route cụ thể (VD:
auth,throttle). - Middleware Group: Nhóm nhiều middleware (VD:
web,api).
Tạo middleware tùy chỉnh:
php artisan make:middleware CheckAge
// app/Http/Middleware/CheckAge.php
public function handle(Request $request, Closure $next)
{
if ($request->age < 18) {
return redirect('home');
}
return $next($request);
}
Đăng ký và sử dụng:
// routes/web.php
Route::get('/dashboard', function () {
// Logic
})->middleware('check.age');
Laravel cũng hỗ trợ terminable middleware — xử lý sau khi response đã gửi đến client (VD: ghi log, gửi notification).
Lợi ích và ứng dụng

- Tách biệt mối quan tâm (SoC): Logic xác thực, logging, caching tách khỏi business logic — code sạch hơn, dễ maintain.
- Tái sử dụng: Một middleware có thể dùng cho nhiều route/controller mà không lặp code.
- Bảo mật tập trung: Xác thực, phân quyền, validate input tại một điểm thay vì rải rác.
- Dễ mở rộng: Thêm/bớt middleware không ảnh hưởng đến logic ứng dụng chính.
- Hiệu năng: Caching middleware, compression middleware giúp tối ưu response time.
- Monitoring: Logging middleware ghi lại mọi request để theo dõi và debug.
Kết luận: Middleware là lớp phần mềm trung gian thiết yếu trong kiến trúc ứng dụng hiện đại, từ tích hợp hệ thống doanh nghiệp đến xử lý HTTP request trong web framework. Hiểu và sử dụng middleware đúng cách giúp xây dựng ứng dụng bảo mật, dễ mở rộng và dễ bảo trì.









