Khái niệm “Routing” chỉ việc quản lý các routes trong hệ thống. Chủ đề này không khó nhưng hơi dài do mức độ da dạng của routes. Vậy mình sẽ chia nhỏ ra làm nhiều bài, tránh bội thực kiến thức nhé các bạn 😉

Basic Routing

Toàn bộ các routes sẽ được định nghĩa trong thư mục “<root_folder>/routes”.


Ví dụ: routes/web.php dùng để manage các routes trên web interface middleware group, routes/api.php manage các routes liên quan api middleware group (Kiến thức về middleware chúng ta sẽ tìm hiểu sau nhé)

use Illuminate\Support\Facades\Route;
 
Route::get('/greeting', function () {
    return 'Hello World';
});

Về cơ bản thì một routing gồm 2 phần: URI và callback function (cũng có thể là 1 Array, một action string, …)

Các router methods

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

Tuy nhiên một route cũng có thể match với nhiều methods

// Routes match với 2 method là get, post
Route::match(['get', 'post'], '/', function () {
    // ...
});

// Routes match với bất kỳ method nào
Route::any('/', function () {
    // ...
});

Trong callback function các bạn có thể inject type-hint

use Illuminate\Http\Request;

// Bạn đang inject Request instance vào callback function, instance này được tự động resolved bởi Laravel
Route::get('/users', function (Request $request) {
    // ...
});

Chú ý: Với các methods: post, put, patch, delete được định nghĩa trong web interface thì HTML form phải khai báo @csrf, nếu không thì request này sẽ được coi là không hợp lệ

<form method="POST" action="/profile">
    @csrf
    ...
</form>

Chuyển hướng route

Route::redirect('/here', '/there');

Mặc định status code là 302, nếu muốn là 301 thì các bạn có thể tự define

Route::redirect('/here', '/there', 301);

Hoặc dùng hàm permanentRedirect để redirect với status code là 301

Route::permanentRedirect('/here', '/there');

View Routes

để định nghĩa một routes có “view”, method routes là GET, bạn có thể làm như sau

Route::get('/', function () {
    return view('welcome');
});

Hoặc đơn giản chỉ cần làm thế này

Route::view('/', 'welcome');

Nếu bạn muốn thêm data vào view thì làm thế này

Route::view('/', 'welcome', ['name' => 'Taylor']);

Route List

Để xem các routes của hệ thống, các bạn chạy command

php artisan route:list

Để xem list routes kèm theo thông tin về middleware group

php artisan route:list -v
// hoặc
php artisan route:list -vv

Hoặc xem list routes mà URI bắt đầu với từ “api” (các bạn có thể thay từ api bằng từ khác nhé)

php artisan route:list --path=api

Bài này kết thúc ở đây nhé. Bài sau chúng ta sẽ tìm hiểu về “Route Parameters”

Happy coding 🙂

By HNK

Leave a Reply

Your email address will not be published. Required fields are marked *