Middleware là hàng phòng thủ, là lớp trung gian, là nơi xử lý các cross-cutting concerns (logging, auth). Nhưng bạn có biết middleware thực sự hoạt động như thế nào bên dưới lớp vỏ php artisan make:middleware?
#1. Bản chất
Middleware trong Laravel không chỉ là một class. Nó là một Pipe trong Pipeline Pattern. Mỗi middleware đều phải có method handle($request, Closure $next).
#2. Luồng thực thi
- Request tới
Kernel. Kernellấy danh sách middleware tương ứng.- Middleware chạy trước
return $next($request). - Sau khi các middleware lồng nhau kết thúc, Response đi ngược lại, chạy các đoạn code sau
$next($request).
#3. Quizz phỏng vấn
Câu hỏi: Phân biệt Middleware chạy trước (Before) và chạy sau (After).
Trả lời: Trước là code nằm trên $next(). Sau là code nằm dưới $next().
Câu hỏi mẹo: Middleware của Laravel có thể thay đổi Response không?
Trả lời: Có, middleware nhận vào $response từ $next($request) và có thể modify trước khi return cho client.