Phân tích luồng Request trong Laravel (ok)
https://hoangan.net/phan-tich-luong-request-trong-laravel.html
Last updated
https://hoangan.net/phan-tich-luong-request-trong-laravel.html
Last updated
Cách học của tôi khi học bất kỳ một cái gì là phải hiểu rõ được bản chất vấn đề, bài này tôi sẽ phân tích luồng Request trong Laravel.
Hiểu một cách đơn giản, đó là khi có một yêu cầu từ phía người dùng, Laravel sẽ tiếp nhận và xử lý nó như thế nào và cuối cùng Request đó sẽ trả về kết quả như thế nào.
Chúng ta cùng xem mô hình sau để dễ hình dung hơn về luồng Request trong Laravel
Người dùng (Client) sẽ gửi Request tới file public/index.php, đây sẽ là file chạy đầu tiên khi có Request từ phía người dùng.
Đăng ký cơ chế autoload
1
require
__DIR__.'/../vendor/autoload.php';
Hiểu một cách đơn giản, Autoload sẽ thay thế các lệnh require, include. Chỉ cần trong các file có tên Class trùng với tên file và có namespace theo quy tắc, hệ thống sẽ tự động load các file đó mà không cần phải sử dụng các lệnh require hoặc include
Import ứng dụng
1
$app
= require_once
__DIR__.'/../bootstrap/app.php';
Trong file bootstrap/app.php sẽ thực hiện các nhiệm vụ sau:
Tạo ứng dụng
Đăng ký các interface cần thiết
Trả về đối tượng ứng dụng ($app)
123456789
$kernel
= $app->make(Illuminate\Contracts\Http\Kernel::class);
$response
= $kernel->handle($request
= Illuminate\Http\Request::capture());
$response->send();
$kernel->terminate($request, $response);
Bước này vẫn ở trong file public/index.php
Hệ thống sẽ nhận đối tượng $app trả về từ bước 1, sau đó thực hiện 2 công việc:
Xử lý Request
Trả về Response
HTTP Kernel sẽ thực hiện các công việc trước khi Request được thực thi (Tiền xử lý):
Xử lý lỗi
Cấu hình log
Xác định môi trường
Xác thực bảo mật
Bộ lọc trung gian mặc định (Middleware default)
HTTP Session
Và rất nhiều công việc khác
Hiểu một cách cơ bản Service Providers chính là trung tâm khởi tạo các ứng dụng của Laravel. Service Providers khởi động rất nhiều thành phần khác nhau trong core cũng như các package được cài thêm vào (Sẽ tìm hiểu ở các bài học tiếp theo)
Sau khi hoàn tất công việc ở bước 4, request sẽ gửi đến Router để định tuyến đến các Controller tương ứng. Ngay lúc này sẽ xảy ra 2 trường hợp:
Trường hợp 01: Router => Controller => Action
Trường hợp 02: Router => Middleware => Controller => Action
Với trường hợp 2, Request sẽ phải chạy qua bộ lọc trung gian (Middleware) trước khi vào Controller tương ứng
Middleware chính là bộ lọc trung gian giúp lọc Request từ phía Router, trong Middleware lập trình viên sẽ thiết lập các điều kiện để cho Request đi tiếp hoặc dừng lại.
Middleware được chia thành 3 loại:
Global Middleware
Route Middleware
Middleware Groups
Chúng ta sẽ tìm hiểu kỹ về nó ở các bài học sau
Thành phần này sẽ xử lý các Request, sau đó trả về Response.
Trong quá trình xử lý bước này còn phải gọi Models để thao tác với cơ sở dữ liệu.
Sau khi Request được xử lý xong, Response sẽ được trả về cho người dùng (Clients) thông qua View (Giao diện), sẽ có những trường hợp không thông qua Views (JSON, XML, Download,…)
Trên đây tôi đã chia sẻ luồng Request trong Laravel Framework. Hy vọng qua bài này giúp bạn hiểu rõ hơn về Laravel hoạt động như thế nào từ đó giúp dễ dàng tiếp cận hơn.