Middleware là gì

     

Middleware là gì?

Middleware là phần đông đoạn mã trung gian nằm giữa các request với response. Nó nhận các request, thi hành các mệnh lệnh tương xứng trên request đó. Sau khi ngừng nó response (trả về) hoặc chuyển kết quả ủy thác cho một Middleware không giống trong hàng đợi.

Bạn đang xem: Middleware là gì

*

Một ví dụ phổ cập mà họ thường đề nghị dùng Middleware đó là những trang chỉ giành riêng cho admin với không được cho phép người dùng bình thường có thể truy tìm cập.

Tại sao nên sử dụng nó?


nguyên nhân Laravel là framework tốt nhất có thể 2019?
Expressjs là gì? vớ tần tật về Express.js

Với bốn tưởng bình thường là mong nối giữa can dự của người tiêu dùng và hệ thống trong xây dựng Web. Middleware vẫn đóng vai trò trung gian thân request/response và các xử lý logic phía bên trong web server.

Do đó, Middleware trong những Framework cho vận dụng Web (Laravel, Django, Rails, ExpressJS…), đang là những hàm được dùng để làm tiền xử lý, lọc những request trước khi đưa vào xử lý xúc tích và ngắn gọn hoặc điều chỉnh những response trước khi gửi về cho tất cả những người dùng.

Hiểu những khái niệm cơ bạn dạng của Laravel Middleware

Trong bài viết này, mình sẽ lấy lấy một ví dụ là cần sử dụng framework Laravel để hiểu quan niệm về middleware. Chúng ta sẽ coi xét giải pháp tạo middleware tùy chỉnh cấu hình trong một vận dụng Laravel.

Sau khi chế tạo middleware tùy chỉnh của bạn, họ sẽ khám phá các tùy chọn gồm sẵn để đk nó cùng với Laravel để nó hoàn toàn có thể thực sự được gọi trong luồng cách xử trí yêu cầu.

Middleware vào Laravel là gì?

Middleware như là 1 trong những cơ chế cho phép bạn tham gia vào luồng giải pháp xử lý request của một áp dụng Laravel. Vào một quá trình xử lý route điển hình nổi bật của Laravel khi thực hiện việc xử lý yêu mong và middleware là trong số những class mà áp dụng phải thông qua.

Vậy đúng chuẩn thì việc xử lý luồng yêu mong Laravel là gì? Ví dụ: cần xác thực người dùng để làm quyết định coi họ đã đạt được phép truy cập đến route bây giờ hay không.

Yêu cầu đăng nhậpChuyển hướng bạn dùngThay đổi/chuẩn hoá các tham sốXử lý response được áp dụng Laravel chế tác ra…

Thực tế, Laravel khoác định đã tất cả sẵn một vài middleware quan tiền trọng. Câu hỏi xác thực bạn dùng cũng rất được chính middleware này thực thi.


tổ chức cơ cấu xử lý request trong Laravel như thế nào?

Làm nạm nào để sinh sản Middleware tùy biến

Chúng ta đã tự tạo thành một middleware tùy phát triển thành trong phần này. Như đang nói nghỉ ngơi trên, Laravel gồm sẵn những middleware quan tiền trọng, tuy vậy để thỏa mãn nhu cầu thêm nhu cầu thì chúng ta cần phảo chế tác thêm nhiều middleware khác. Nhưng đúng mực thì middleware này sẽ làm gì?

Case study rõ ràng nhất mà thực tiễn nhất là khi chúng ta truy cập website từ ngẫu nhiên thiết bị cầm tay nào, thì sẽ tiến hành chuyển tìm hiểu URL miền phụ tương ứng (vd: m.vincitysdaimo.com lúc ta vào vincitysdaimo.com trên mobile) giành cho mobile với toàn bộ thông số chuỗi truy vấn còn nguyên vẹn. Tất nhiên bây giờ đã tất cả responsive nhưng nhiều lúc một phiên phiên bản mobile tinh gọn gàng và vận tốc nhanh sẽ có được những chức năng hay ho khác

Trong middleware tùy chỉnh cấu hình này, bọn họ sẽ soát sổ user agent và user được chuyển đào bới URL tương ứng trên di động nếu họ đang thực hiện thiết bị di động.

Chạy lệnh sau để chế tạo một template middleware MobileRedirect.

Xem thêm: Các Món Làm Từ Sườn Non Chay, Các Món Ngon Làm Từ Sườn Chay

php artisan make:middleware MobileRedirectVà các bạn sẽ tạo ra một file app/Http/Middleware/MobileRedirect.php với code sau.

Việc xúc tiến của method handle dựa vào khung sườn của middleware, và lô ghích chính của middleware mà bạn đang tìm cách xúc tiến nằm ở đây.

Có 2 loại middleware cơ mà Laravel đang xuất hiện — before middleware với after middleware.

Before middleware chạy trước khi yêu cầu thực sự được giải pháp xử lý và bình luận được chế tạo ra. Phương diện khác, after middleware chạy sau khoản thời gian yêu mong được ứng dụng xử lý và phản hồi đã được desgin tại thời gian này.

Trong trường hòa hợp này, họ cần gửi hướng người tiêu dùng trước lúc yêu ước được cách xử lý và vì thế nó đang được cách tân và phát triển như một before middleware.

Tiếp tục sửa đổi file app/Http/Middleware/MobileRedirect.php với các nội dung sau.

mobile == "1") return redirect("mobile-site-url"); return $next($request); }}Chúng ta sẽ soát sổ sự vĩnh cửu của thông số mobile và nếu có mức giá trị TRUE, người tiêu dùng sẽ được chuyển đào bới URL trên sản phẩm di động. Từ bây giờ bạn cần sử dụng một thư viên phát hiện user agent để mang thông tin user sống client.

Tiếp tục ta sẽ hotline $next($request) góp yêu mong được xử lý thêm. Điều đặc trưng cần để ý trong trường phù hợp này là họ đã thiết lập cấu hình logic vạc hiện sản phẩm công nghệ di động trước khi gọi $next($request), cùng nó biến before middleware.

Sau đó họ tạo một after middleware để xử lý các yêu ước trên.

Xem thêm: Nêu Đặc Điểm Và Công Dụng Của Sơ Đồ Lắp Đặt Là, Công Dụng Của Sơ Đồ Lắp Đặt Là: A

Lúc này, middleware tùy chỉnh của họ gần như đã sẵn sàng chuẩn bị để được test thử. Bạn cần phải đăng ký middleware của bạn trong Laravel. Ta mở file app/Http/Kernel.php

/** * The application"s global HTTP middleware stack. * * These middleware are run during every request lớn your application. * *
var array */protected $middleware = < IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class, IlluminateFoundationHttpMiddlewareValidatePostSize::class, AppHttpMiddlewareTrimStrings::class, IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,>;Chúng tha thêm middleware tùy chỉnh thiết lập của mình vào mảng trên sau:

protected $middleware = < IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class, IlluminateFoundationHttpMiddlewareValidatePostSize::class, AppHttpMiddlewareTrimStrings::class, IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class, AppHttpMiddlewareMobileRedirect::class,>;Sau khi thêm vào, chúng ta thử truy vấn vào ngẫu nhiên route làm sao của Laravel bởi chuỗi truy vấn mobile=1 cùng xem kết quả, bây giờ coi như chúng ta đã đk thành công middleware bởi vì mình tạo. Đôi khi chúng ta chỉ ao ước chạy middleware cho các route xác minh hãy sử dụng $routeMiddleware.