Laravel学习笔记(2)路由相关

原文:Laravel 路由

阅读小记:

  1. 隐示绑定中,

    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
    }
    
  2. 显示绑定

    # 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) {
        //
    });
    
  3. 可以使用 match 方法,也可以使用 any 方法注册一个实现响应所有 HTTP 请求的路由:

    Route::match(['get', 'post'],'/user/create', 'UserController@create')->name('user.create');
    
    Route::any('/user/store', 'UserController@store')->name('user.store');
    
  4. 命名空间

    // 在 "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');  
    

    其中❶❷❸等效,指向同一个控制器

  5. 中间件 Laravel开发文档

    Route::middleware('throttle:60,1')->group(function () {
        Route::get('/user', function () {
            //
        });
    });
    

    优先于middleware优先于route进行运行

  6. Api路由与web路由基本一致,就是访问的时候,要加前缀api
    例如访问web路由web:xxx.com/test
    则访问api路由:xxx.com/api/test

  7. console为控制台路由

    // blog\routes\console.php有如下方法
    Artisan::command('inspire', function () {
        $this->comment(Inspiring::quote());
    })->describe('Display an inspiring quote');
    

    访问方式为在控制台中使用:php artisan inspire;

发布了40 篇原创文章 · 获赞 0 · 访问量 791

猜你喜欢

转载自blog.csdn.net/qj4865/article/details/104083478