📜  laravel 路由 - PHP (1)

📅  最后修改于: 2023-12-03 15:02:38.398000             🧑  作者: Mango

Laravel 路由 - PHP

Laravel 是一个现代化、优雅的 PHP Web 框架,具有简单而富有表现力的语法,使得 Web 开发变得愉悦和有趣。在 Laravel 框架中,路由是构建 Web 应用程序的重要组成部分。

什么是 Laravel 路由?

路由是指将 URL 请求映射到相应的处理程序(也称为控制器)的机制。在 Laravel 框架中,路由定义了应用程序对特定 URL 的响应方式。这些 URL 可以是“精确匹配”的、有参数的、也可以是正则表达式匹配的等不同形式。

Laravel 路由机制实现了请求与响应的解耦,方便地进行 URL 映射和参数传递,让编写 Web 应用程序变得更加简单而统一。

Laravel 路由的语法

Laravel 框架中定义路由的标准语法格式如下:

Route::[HTTP请求方式]('[URI]', [回调函数或控制器方法]);

其中,方括号表示可选项。下面是一个示例:

Route::get('/hello', function () {
    return 'Hello, World!';
});

这个路由定义匹配 HTTP GET 方法和 URI 为“/hello”的请求,并返回一个字符串“Hello, World!”。

Laravel 路由的方式

Laravel 路由支持多种 HTTP 请求方式,包括:

  • GET:获取资源
  • POST:提交资源
  • PUT:更新资源
  • DELETE:删除资源
  • PATCH:更新部分资源
  • OPTIONS:获取资源支持的 HTTP 请求方式

可以通过 Route 类提供的方法来定义不同 HTTP 请求方法的路由。下面是一些示例:

GET 请求
Route::get('/hello', function () {
    return 'Hello, World!';
});
POST 请求
Route::post('/users', function () {
    // 创建新用户
});
PUT 请求
Route::put('/users/{id}', function ($id) {
    // 更新用户
});
DELETE 请求
Route::delete('/users/{id}', function ($id) {
    // 删除用户
});
PATCH 请求
Route::patch('/users/{id}', function ($id) {
    // 更新部分用户信息
});
OPTIONS 请求
Route::options('/users/{id}', function ($id) {
    // 获取支持的 HTTP 请求方法
});
Laravel 路由参数

Laravel 路由支持使用大括号{}来捕获 URI 的一部分作为参数,并传递给回调函数或控制器方法。下面是一个示例:

Route::get('/users/{id}', function ($id) {
    return 'User ID: ' . $id;
});

这个路由定义匹配 HTTP GET 方法和 URI 为“/users/{id}”的请求,将 URI 中的{id}参数传递给回调函数,并返回一个字符串,形如“User ID: 123”。

Laravel 命名路由

Laravel 路由允许使用命名路由来更好地进行 URL 构造和重定向。可以通过 Route 类的 name 方法为路由指定名称。下面是一个示例:

Route::get('/users/{id}', function ($id) {
    return 'User ID: ' . $id;
})->name('user.detail');

这个路由定义匹配 HTTP GET 方法和 URI 为“/users/{id}”的请求,并将其命名为“user.detail”。

Laravel 路由组

Laravel 路由允许使用路由组(Route Group)来简化重复的路由定义。可以通过 Route 类提供的 group 方法实现。下面是一个示例:

Route::prefix('admin')->group(function () {
    Route::get('/dashboard', function () {
        return 'Admin Dashboard';
    });
    Route::get('/users', function () {
        return 'List of Users';
    });
});

这个路由组定义了一个路由前缀为“/admin”下的两个 HTTP GET 方法路由。如果访问 URL 为“/admin/dashboard”,将返回字符串“Admin Dashboard”;如果访问 URL 为“/admin/users”,将返回字符串“List of Users”。

Laravel 路由中间件

Laravel 路由支持使用中间件(Middleware)来控制路由的行为。中间件是一种可重用的代码,可以在请求达到路由或响应被发送回客户端之前对请求进行处理。可以通过 Route 类提供的 middleware 方法指定需要使用的中间件。下面是一个示例:

Route::get('/users', function () {
    // 获取用户列表
})->middleware('auth');

这个路由定义匹配 HTTP GET 方法和 URI 为“/users”的请求,并使用“auth”中间件来控制路由的访问权限。

Laravel 路由缓存

Laravel 路由支持路由缓存,可以极大地提升应用程序的性能。路由缓存将把应用程序的所有路由定义缓存在一个文件中,以加速路由的检索。可以通过 Artisan 命令行工具的“route:cache”命令缓存路由。下面是一个示例:

php artisan route:cache

执行这个命令将把路由缓存到文件系统,以提高应用程序路由的性能。

总结

Laravel 路由机制使得 URL 映射和参数传递变得更加简单和统一,让开发 Web 应用程序变得更加愉悦和容易。路由可以使用多种 HTTP 请求方法、捕获 URI 的参数、使用命名路由、使用路由组和中间件等。对于大型 Web 应用程序,可以考虑使用路由缓存来优化路由性能。