原文:Laravel 路由
阅读小记:
-
隐示绑定中,
Route::get('api/users/{user}', function (App\User $user) { // 源地址中的 {} 中的变量名(即:user)和传参名必须完全一致, // 变量名可以随意取名,只要保持一致即可 return $user->email; }); 自定义键名,在模型中修改(默认指的是数据库中的主键 id): App/User.php public function getRouteKeyName() { // 此时变量名变为了slug,搜索条件从原来的where id=2变成了where slug=2 return 'slug'; // api/users/2 // select * from `users` where `slug` = 2 limit 1 }
-
显示绑定
# RouteServiceProvider public function boot() { parent::boot(); Route::model('user', App\User::class); } // 设置route都使用 App\User这个Model,所以function( App\User $user)的App\User不需要再赘述 Route::get('profile/{user}', function ($user) { // });
-
可以使用 match 方法,也可以使用 any 方法注册一个实现响应所有 HTTP 请求的路由:
Route::match(['get', 'post'],'/user/create', 'UserController@create')->name('user.create'); Route::any('/user/store', 'UserController@store')->name('user.store');
-
命名空间
// 在 "App\Http\Controllers\Admin" 命名空间下的控制器 Route::namespace('Admin')->group(function () { // Admin/UserController@index Route::get('/user', 'UserController@index'); // Admin/UserController@user2 ❶ Route::get('/user2', 'UserController@user2'); }); // Admin/UserController@index Route::namespace('Admin')->get('/user', 'UserController@index'); // Admin/UserController@user2 ❷ Route::namespace('Admin')->get('/user2', 'UserController@user2'); // Admin/UserController@user2 ❸ Route::namespace('Admin')->get('/user2', 'Admin\UserController@user2');
其中❶❷❸等效,指向同一个控制器
-
中间件 Laravel开发文档
Route::middleware('throttle:60,1')->group(function () { Route::get('/user', function () { // }); });
优先于middleware优先于route进行运行
-
Api路由与web路由基本一致,就是访问的时候,要加前缀api
例如访问web路由web:xxx.com/test
则访问api路由:xxx.com/api/test -
console为控制台路由
// blog\routes\console.php有如下方法 Artisan::command('inspire', function () { $this->comment(Inspiring::quote()); })->describe('Display an inspiring quote');
访问方式为在控制台中使用:php artisan inspire;