Laravel 路由定义与管理
Laravel 的路由系统是框架的核心之一,它提供了一种优雅的方式来管理 Web 请求,并将其映射到相应的控制器或闭包函数。本文将详细介绍 Laravel 路由的定义、类型及其高级功能。
1. 路由基础
Laravel 的路由定义位于 routes/web.php
(用于 Web 应用) 和 routes/api.php
(用于 API 请求) 文件中。
基本路由
最简单的路由可以直接返回字符串或视图:
use Illuminate\Support\Facades\Route;Route::get('/', function () { return '欢迎访问 Laravel 网站!'; });
也可以直接返回视图:
Route::get('/about', function () { return view('about'); });
2. 路由类型
Laravel 支持多种 HTTP 请求方法:
HTTP 方法 | Laravel 语法 |
---|---|
GET | Route::get('/path', callback); |
POST | Route::post('/path', callback); |
PUT | Route::put('/path', callback); |
PATCH | Route::patch('/path', callback); |
DELETE | Route::delete('/path', callback); |
ANY | Route::any('/path', callback); |
MATCH | Route::match(['get', 'post'], '/path', callback); |
示例
Route::post('/submit', function () { return '表单已提交!'; }); Route::match(['get', 'post'], '/profile', function () { return '支持 GET 和 POST 访问'; });
3. 路由参数
必选参数
路由可以包含动态参数:
Route::get('/user/{id}', function ($id) { return "用户ID:$id"; });
访问 /user/5
时,返回 用户ID:5
。
可选参数
加上 ?
号并设置默认值:
Route::get('/user/{name?}', function ($name = '游客') { return "你好,$name"; }); });
访问 /user
时,返回 你好,游客
。
参数约束
使用正则表达式限制参数格式:
Route::get('/product/{id}', function ($id) { return "产品 ID:$id"; })->where('id', '[0-9]+');
4. 路由命名
给路由定义名称,方便在代码中使用:
Route::get('/dashboard', function () { return '仪表盘'; })->name('dashboard');
在 Blade 视图中使用:
<a href="{{ route('dashboard') }}">访问仪表盘</a>
5. 路由分组
中间件
Route::middleware(['auth'])->group(function () { Route::get('/profile', function () { return '个人中心'; }); Route::get('/settings', function () { return '设置'; }); });
所有路由都应用 auth
中间件。
命名空间
Route::namespace('Admin')->group(function () { Route::get('/dashboard', 'DashboardController@index'); });
前缀
Route::prefix('admin')->group(function () { Route::get('/users', function () { return '管理员用户列表'; }); });
访问 /admin/users
即可访问该路由。
6. 资源路由
Laravel 提供 Route::resource()
方便快捷地生成 CRUD 路由:
Route::resource('posts', 'PostController');
自动生成以下路由:
HTTP 方法 | URL | 控制器方法 |
---|---|---|
GET | /posts | index |
GET | /posts/create | create |
POST | /posts | store |
GET | /posts/{post} | show |
GET | /posts/{post}/edit | edit |
PUT/PATCH | /posts/{post} | update |
DELETE | /posts/{post} | destroy |
7. API 路由
API 路由定义在 routes/api.php
中,默认使用 api
中间件:
Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); });
Laravel 提供 apiResource()
生成 RESTful API:
Route::apiResource('posts', 'Api\PostController');
它类似 resource()
,但不包括 create
和 edit
路由。
8. 路由缓存
在生产环境中,推荐使用路由缓存优化性能:
php artisan route:cache # 生成缓存 php artisan route:clear # 清除缓存
总结
Laravel 的路由系统非常强大,提供了基础路由、参数、命名、分组、资源路由以及 API 路由等丰富功能。合理使用路由可以提高代码可维护性,让你的 Laravel 应用更加清晰高效。
如果你正在学习 Laravel,希望这篇文章能帮你掌握路由管理的核心要点!🚀
1、部分文章来源于网络,仅作为参考。 2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!