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 -vvHoặ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=apiBà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 🙂