Toidicode.com

Toidicode.com

BASIC TO ADVANCE

Bài 12: Request trong Laravel 8 (phần 1)

Tiếp tục với series học Laravel 8. Phần này mình sẽ giới thiệu với mọi người về request trong Laravel 8.

1. Request Trong Laravel là gì?

Request trong Laravel là một object chưa các thông tin liên quan đến HTTP request hiện tại. Dựa vào object này chúng ta có thể lấy được các thông tin như input, cookie, file,...

Class Request này nằm trong Illuminate\Http\Request core của Laravel. Object này được base trên http-foundation package của Symfony Laravel chỉ custom lại một chút và thêm một số phương thức.

Lý thuyết thế thôi :)) giờ mình cùng bắt tay vào thực hành thôi.

2. Tương tác với Request trong Laravel.

Mặc định Request object đã được binding vào service container của Laravel rồi, nên chúng ta muốn dùng nó thì có thể binding trực tiếp vào trong argument khi cần.

VD: Inject trong Route.

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::get('/', function (Request $request) {
    // code
});

VD: Inject trong Controller

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    /**
     * Store a new user.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $name = $request->input('name');

        //
    }
}

Lúc này ở route bạn sẽ không cần phải khai báo param $request nữa.

use App\Http\Controllers\UserController;

Route::post('/user', [UserController::class, 'store']);

Truy vấn thông tin URL/PATH

Để lấy path của request các bạn sử dụng method path.

VD:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::get('/', function (Request $request) {
    return "Path: " . $request->path();
});

Kết quả:

Lấy path trong request laravel

Trong trường hợp bạn muốn lấy ra URL của request các bạn có thể sử dụng phương thức url.

VD:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::get('/', function (Request $request) {
    return "Path: " . $request->url();
});

Kết quả:

Lay url trong laravel request

Trong trường hợp các bạn muốn lấy ra full URL của request các bạn có thể sử dụng phương thức fullUrl.

VD:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::get('/', function (Request $request) {
    return "Path: " . $request->fullUrl();
});

Kết quả:

lay full url trong laravel request

Trong trường hợp bạn muốn add thêm query vào trong path các bạn có thể sử dụng phương thức fullUrlWithQuery.

VD:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::get('/', function (Request $request) {
    return "Path: " . $request->fullUrlWithQuery(['name' => 'VuThanhTai']);
});

Kết quả:

fullUrlWithQuery trong laravel request

Để kiểm tra path hiện tại có match với một path rule nào đó hay không các bạn có thể sử dụng phương thức is.

VD: Kiểm tra xem path hiện tại có phải bắt đầu bằng admin hay không?

if ($request->is('admin/*')) {
    //
}

Bạn cũng có thể sử dụng phương thức routeIs để kiểm tra tương tự như phương thức is, nhưng là check qua route name.

VD: Kiểm tra xem path hiện tại có phải nằm trong route name bắt đầu bằng admin không?

if ($request->routeIs('admin.*')) {
    //
}

Truy vấn method của request

Để lấy ra method của request các bạn có thể sử dụng phương thức method.

VD:

$request->method();

Bạn cũng có thể sử dụng phương thức isMethod để kiểm tra phương thức của request.

VD: Kiểm tra xem request có phải POST request không?

if ($request->isMethod('post')) {
    //
}

Truy vấn thông tin headers

Nếu muốn truy vấn thông tin liên quan đến header của request các bạn có thể sử dụng phương thức header.

VD: Lấy ra user-agent của reuquest.

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::get('/', function (Request $request) {
    return 'User Agent: ' . $request->header('user-agent');
});

Kết quả:

Trong trường hợp request header cần lấy ra không tồn tại thì phương thức header sẽ trả về null. Nếu muốn thay đổi giá trị default này bạn có thể truyền thêm tham số thứ 2 vào hàm header.

VD:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::get('/', function (Request $request) {
    return 'Header: ' . $request->header('toidicode', 'Làm gì có header này');
});

Kết quả:

Bạn cũng có thể lấy ra bearer token của request bằng cách sử dụng phương thức bearerToken.

VD:

$token = $request->bearerToken();

Cách viết trên tương tự với:

$token = $request->header('Authorization', '');

Lấy ra IP của người dùng.

Để lấy ra địa chỉ ip address của người dùng các bạn sử dụng phương thức ip.

VD:

$ipAddress = $request->ip();

 

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vũ Thanh Tài

About author
The best way to learn is to share
Xem tất cả bài đăng

0 Comments

Bài viết chưa có ai bình luận, hãy là người đầu tiên đi bạn!

Bình luận

Captcha