Route là gì?

Đúng như tên gọi của nó, Route thực hiện chức năng định tuyến, dẫn đường cho các HTTP request gửi đến đúng nơi mà ta mong muốn. Với sự phát triển mạnh mẽ của ứng dụng web ngày nay, việc làm cho ứng dụng có các chức năng và giao diện tốt là một chuyện nhưng để có một trang web thực sự tốt hơn nữa thì “đường dẫn thân thiện” là một thứ không thể thiếu được.

Khi bạn đang học Laravel Framework, việc đầu tiên phải làm đó là xác định các Route, mỗi Route sẽ liên kết với một Controller nhất định.

REST api route là gì?

Là một số các phương thức thường được sử dụng, các phương thức này về cơ bản sẽ tương ứng với các thao tác Create, Read, Update, Delete.

Method CRUD Mục đích Response
POST Create Được sử dụng để tạo mới một bản ghi trong cơ sở dữ liệu

201 – Created

404 - Not Found

409 - Conflict

GET Read Được sử dụng để liệt kê các bản ghi trong cơ sở dữ liệu

200 – OK

404 - Not Found

PUT Update Được sử dụng để cập nhật một hay nhiều bản ghi trong cơ sở dữ liệu

405 - Not allowed

200 – OK

204 - No Content

404 - Not Found

DELETE Delete Được sử dụng để xóa một hay nhiểu bản ghi trong cơ sở dữ liệu

200 – OK

404 - Not Found

Làm thế nào để xác định Route trong Laravel?

Các Route trong Laravel được xác định ở các vị trí sau:

route/api.php    Các route được xác định trong file này thì url sẽ có tiền tố là /api

route/web.php  Tất cả các đường dẫn web được xác định ở đây.

Sau đây là một số ví dụ về routes cơ bản:

# Định nghĩa route lấy thông tin user sử dụng phương thức GET
Route::get('users', 'UserController@show');
# Định nghĩa route create user sử dụng phương thức POST
Route::post('/users', 'UserController@create');
# Định nghĩa route update thông tin user sử dụng phương thức PATCH
Route::patch('/users/:id', 'UserController@update');
# Định nghĩa route delete user sử dụng phương thức DELETE
Route::delete('/users/:id', 'UserController@delete');

Route không sử dụng Controller

Rất dễ dàng để tạo một route không liên kết với bất kì Controller nào và phản hồi dưới dạng text, json hoặc html. Hãy xem ví dụ sau đây:

Route::get('members/login.html', function() { 
   return View::make('members.login'); 
});
Route::view('/dashboard', 'dashboard');
Route::view('/welcome', 'welcome', ['name' => 'Huynh Manh Dan']);

Route Parameters

Để xác định các route có hoặc không có tham số tùy chọn trong Laravel, sau đây là một số ví dụ:

# Xác định route trong đó id là tham số  tùy chọn
Route::get('/users/{id?}', 'UserController@get');
# Xác định route mà tham số bắt buộc phải có là id
Route::get('/users/{id}', 'UserController@get');

Regular Expression Constraints

Bạn cũng có thể giới hạn hoặc chỉ định giá trị của tham số trong route, nó có thể thực hiện đơn giản bằng cách sử dụng phương thức where. Phương thức where chỉ chấp nhận hai tham số là tên tham số và và một regular expression, sau đây là một số ví dụ:

# Xác định route trong đó id chỉ nên là số
Route::get('/users/{id}', 'UserController@get')->where('id', '[0-9]+');
# Xác định route mà trong đó name chỉ nên là alpha
Route::get('/users/{name}', 'UserController@get')->where('name', '[A-Za-z]+');
# Xác định route mà trong đó id chỉ nên là số và name chỉ nên là alpha
Route::get('/users/{id}/{name}', 'UserController@get')->where(['id' => '[0-9]+', 'name' => '[a-z]+']);

Named Routes

Các route được đặt tên cung cấp cho bạn một alias/remember name cho url. Bạn sử dụng từ khóa as trong khi định nghĩa các route

Route::get('users', ['as' => 'users', function () {
    //
}]);
// Đặt name cho function show trong UserController
Route::get('users', [
    'as' => 'users', 'uses' => 'UserController@show'
]);

Ngoài ra, bạn có thể xác định name bằng cách sử dụng phương thức name:

Route::get('users', 'UserController@show')->name('users.show');

Routes groups

Routes groups sẽ giúp bạn gom nhóm các route có các điểm chung như namespaces hoặc middleware hoặc prefix.

Middleware

Route::group(['middleware' => 'auth'], function () {
    Route::get('users/profile', function () {
         // Uses Auth Middleware
    });
});

Namespaces

Route::group(['namespace' => 'App\Http\Controllers\Admin'], function()
{
    // Controllers in "App\Http\Controllers\Admin" Namespace
});

Prefixes

Route::group(['prefix' => 'users'], function () {
    Route::get('{id}', function ()    {
        // Matches The "/users/id" URL
    });
});

Route 404

Bạn sử dụng Route::fallback để xác định các route thực thi khi không có route nào phù hợp với yêu cầu được gửi đến.

Giả sử bạn muốn xác định trang 404 khi không có route nào phù hợp, thì bạn có thể sử dụng như sau:

Route::fallback(function () {
    return view("404");
});

Subdomain Routing

Bạn có thể gom nhóm các route theo sub domains, bạn có thể sử dụng như sau:

Route::domain('{account}.example.com')->group(function () {
    Route::get('user/{id}', function ($account, $id) {
        //
    });
});

Tôi hy vọng bạn thích hướng dẫn này. Nếu bạn có bất kỳ câu hỏi nào hãy liên hệ với chúng tôi qua trang contact. Cảm ơn bạn.

CÓ THỂ BẠN QUAN TÂM

Export CSV from AWS RDS - Import into MySQL with Laravel

Export CSV from AWS RDS - Import into MySQL with Laravel

Transfer Database Trong quá trình phát triển và bảo trì dự án, nhiệm vụ di chuyển cơ sở dữ liệu từ hệ thống này sang hệ thống khác là một nhiệm vụ khá là phổ biến. Chúng ta thường sẽ sử dụng câu...

Laravel Scout Full Text Search With Meilisearch

Laravel Scout Full Text Search With Meilisearch

Laravel Scout cung cấp một giải pháp đơn giản, dựa trên trình điều khiển để thêm tìm kiếm Full Text vào các mô hình Eloquent của bạn. Khi sử dụng Eloquent, Scout sẽ tự động giữ chỉ mục tìm kiếm của bạ...

Integrating OpenAI in Laravel

Integrating OpenAI in Laravel

OpenAI OpenAI là một phòng thí nghiệm nghiên cứu trí tuệ nhân tạo (AI) của Mỹ bao gồm tổ chức phi lợi nhuận OpenAI Incorporated (OpenAI Inc.) và công ty con hoạt động vì lợi nhuận OpenAI Limited Par...

Laravel View

Laravel View

View là gì? Đây là phần giao diện (theme) dành cho người sử dụng. Nơi mà người dùng có thể lấy được thông tin dữ liệu của MVC thông qua các thao tác truy vấn như tìm kiếm hoặc sử dụng thông qua các...

Eloquent Methods: whereDoesntHaveRelation and whereMorphDoesntHaveRelation

Eloquent Methods: whereDoesntHaveRelation and whereMorphDoesntHaveRelation

New Laravel 11.37: Eloquent Methods Laravel cung cấp cho chúng ta khả năng xây dựng các truy vấn dữ liệu mạnh mẽ với Eloquent ORM, giúp chúng ta có thể xử lý các truy vấn cơ sở dữ liệu phức tạp một...

Laravel Many to Many Eloquent Relationship

Laravel Many to Many Eloquent Relationship

Many To many Relationship là mối quan hệ hơi phức tạp hơn mối quan hệ 1 - 1 và 1- n. Ví dụ một user có thể có nhiều role khác nhau, trong đó role cũng được liên kết với nhiều user khác nhau. Vì vậy...

Laravel Middlewares

Laravel Middlewares

Middleware cung cấp một cơ chế thuận tiện để lọc các yêu cầu HTTP gửi đến ứng dụng bạn. Nó là một lớp trung gian nằm giữa request và controller. Bạn có thể thêm các xử lý logic trước khi gửi đến contr...

Laravel One to Many Eloquent Relationship

Laravel One to Many Eloquent Relationship

One to Many Relationship được sử dụng trong trường hợp một dữ liệu của một bảng được liên kết với một hoặc nhiều dữ liệu ở bảng khác. Ví dụ, một bài post có thể có nhiều comment. Vì vậy, trong hướn...

Amazon S3 Pre-Signed URL with DropzoneJs in Laravel

Amazon S3 Pre-Signed URL with DropzoneJs in Laravel

Chức năng upload file hay hình ảnh là một chức năng rất phổ biến, hầu hết các dự án đều có chức năng này. Đa số các nhà phát triển khi thực hiện chức năng upload file, thường sẽ sử dụng cách làm nh...

ManhDanBlogs