在 Laravel 中,路由定义遵循一定的规范,这些规范有助于保持代码的整洁和可维护性。以下是一些主要的规范:
-
路由文件位置:默认情况下,所有的路由定义都位于
routes
目录下的web.php
(用于 web 请求)和api.php
(用于 API 请求)文件中。你也可以根据需要创建自定义路由文件,并在routes/web.php
或routes/api.php
文件中使用require
语句引入。 -
路由声明:使用
Route
类的静态方法(如get
、post
、put
、delete
等)来定义路由。每个方法接受两个参数:第一个参数是 URL 模式,第二个参数是对应的闭包或控制器方法。 -
路由参数:在 URL 模式中,可以使用大括号
{}
包裹参数名称,如Route::get('user/{id}', 'UserController@show')
。在闭包或控制器方法中,可以通过将参数添加到数组中或使用路由参数强制类型转换来获取这些参数。 -
路由命名:为路由指定一个名称,以便在其他地方(如视图、控制器等)引用。可以使用
name
方法为路由命名,如Route::get('user/{id}', 'UserController@show')->name('user.show')
。 -
路由分组:可以将多个路由组合在一起,以便对它们应用相同的属性(如中间件、命名空间、前缀等)。使用
group
方法创建路由组,如:Route::middleware(['auth'])->group(function () { Route::get('dashboard', 'DashboardController@index'); Route::get('profile', 'ProfileController@index'); });
-
路由模型绑定:可以将 Eloquent 模型与路由参数自动绑定,以便在控制器方法中直接使用模型实例。可以使用
route
方法的bind
选项来实现模型绑定,如:Route::get('user/{user}', 'UserController@show')->where('user', '[0-9]+')->bind('user', function ($id) { return App\Models\User::findOrFail($id); });
-
路由缓存:为了提高性能,可以缓存路由定义。使用
php artisan route:cache
命令生成路由缓存文件。需要注意的是,在开发过程中,每次修改路由定义后都需要重新生成路由缓存。
遵循这些规范有助于保持 Laravel 项目的结构清晰和易于维护。