Laravel request() – Lấy Dữ Liệu Request Nhanh Gọn, Tối Ưu Cho Developer
- Home
- Laravel request() – Lấy Dữ Liệu Request Nhanh Gọn, Tối Ưu Cho Developer
Trong quá trình phát triển ứng dụng web với Laravel, việc xử lý dữ liệu gửi lên từ người dùng (form submission, URL parameters, JSON payload, API headers) là thao tác diễn ra liên tục. Laravel cung cấp helper request() – một giải pháp cực kỳ gọn nhẹ, linh hoạt giúp truy cập đối tượng HTTP Request mà không cần phải Type-hint Illuminate\Http\Request vào từng method Controller.
Bài viết này DCSOFT sẽ hướng dẫn chi tiết các cách khai thác helper request() để xử lý dữ liệu chuẩn chỉnh, sạch code và tối ưu hiệu suất nhất.
request() trong Laravel là gì?Helper request() là một hàm toàn cục (global helper function) trong Laravel. Bản chất của nó là trả về instance của class Illuminate\Http\Request đang xử lý trong service container.
Khi làm việc với HTTP Request, bạn thường có hai lựa chọn chính:
Cách truyền thống (Dependency Injection):
use Illuminate\Http\Request;
public function store(Request $request)
{
$name = $request->input('name');
}
Cách sử dụng Helper request():
public function store()
{
$name = request('name'); // Hoặc request()->input('name')
}
Sử dụng request() giúp code ngắn hơn, dễ đọc hơn, đặc biệt tiện lợi khi bạn cần truy cập dữ liệu request ở Blade view, Helper custom hay Middleware mà không muốn Inject dependency.
request()Bạn có thể truyền trực tiếp tên field vào helper request(). Nếu field đó không tồn tại, bạn có thể truyền giá trị mặc định ở tham số thứ hai.
// Lấy giá trị 'email'
$email = request('email');
// Lấy giá trị 'role', nếu không có thì trả về 'guest'
$role = request('role', 'guest');
all())Lấy danh sách tất cả Input nhận được dưới dạng một array (bao gồm cả dữ liệu query string và body).
$data = request()->all();
only() và except())Để đảm bảo an toàn thông tin và tránh vấn đề Mass Assignment, bạn nên lọc chính xác các field cần thiết.
// Chỉ lấy 'username' và 'password'
$credentials = request()->only(['username', 'password']);
// Lấy tất cả ngoại trừ '_token' và 'g-recaptcha-response'
$inputData = request()->except(['_token', 'g-recaptcha-response']);
has(), filled(), missing())has('field'): Trả về true nếu field xuất hiện trong request (cho dù giá trị rỗng).
filled('field'): Trả về true nếu field xuất hiện và không bị rỗng.
missing('field'): Trả về true nếu field không xuất hiện trong request.
if (request()->has('search')) {
// Tìm kiếm
}
if (request()->filled('phone')) {
// Xử lý gửi tin nhắn SMS
}
request()URL Query String (?page=2&sort=asc):
$page = request()->query('page', 1);
Route Parameter (/users/{id}):
$userId = request()->route('id');
Khi xây dựng API, client thường gửi request dưới dạng JSON (Content-Type: application/json). Helper request() tự động parse JSON này mà không cần cấu hình thêm:
// Lấy giá trị thuộc tính lồng nhau trong JSON
$city = request('user.address.city');
// Kiểm tra method HTTP
if (request()->isMethod('post')) {
// ...
}
// Kiểm tra xem request có phải Ajax/Axios gửi lên hay không
if (request()->ajax()) {
return response()->json(['status' => 'success']);
}
// Lấy Header
$token = request()->header('Authorization');
request()| Phương thức | Cú pháp ví dụ | Mô tả & Trường hợp sử dụng |
| Direct Access | request('name') |
Nhanh gọn nhất, trả về value hoặc null |
| Input | request()->input('name', 'default') |
Rõ ràng, hỗ trợ lấy giá trị mặc định |
| Query String | request()->query('page') |
Chỉ lấy từ URL Parameter (sau dấu ?) |
| Boolean | request()->boolean('is_active') |
Ép kiểu dữ liệu về true/false |
| Only / Except | request()->only(['a', 'b']) |
Lọc bớt dữ liệu để bảo mật (tránh Mass Assignment) |
request() và khi nào dùng FormRequest?Dù request() rất nhanh và tiện, bạn nên áp dụng đúng ngữ cảnh để duy trì chất lượng dự án:
Nên dùng request() khi:
Truy cập dữ liệu đơn giản trong Controller ngắn gọn.
Kiểm tra tham số phân trang, bộ lọc (search, filter) trên giao diện.
Cần lấy nhanh Request Header, IP address, hoặc kiểm tra request()->ajax().
Nên chuyển sang FormRequest chuyên biệt khi:
Logic Validate phức tạp, có nhiều điều kiện ràng buộc.
Dự án lớn cần tách bạch trách nhiệm (Clean Code / Single Responsibility Principle).
Helper request() trong Laravel là một công cụ mạnh mẽ giúp đơn giản hóa việc tương tác với dữ liệu đầu vào, giảm thiểu boilerplate code và nâng cao tốc độ phát triển ứng dụng. Hy vọng kiến thức này sẽ giúp bạn viết code Laravel tối ưu và gọn gàng hơn.
Nếu bạn đang tìm kiếm giải pháp phát triển phần mềm, xây dựng hệ thống web chuyên nghiệp hoặc tư vấn kiến trúc Laravel, hãy liên hệ ngay với DCSOFT để được hỗ trợ tốt nhất!