laravel学习笔记(八)路由详解

1、路由文件存放路径:

  在laravel5.4中是存放在routes文件夹下

2、类型:

  常用的类型为get和post两种,其中post路由无法通过url直接访问:

Route::get('geturl', function(){
	return 'this is get url';
});

Route::post('posturl', function(){
	return 'this is post url';
});

  如果想要通过多种类型访问url,可以通过match设置路由:

Route::match(['get', 'post'], 'getorposturl', function(){
	return 'this is get or post url';
});

  如果要允许任意类型都可以访问url,可以通过any设置路由:

Route::any('anyurl', function(){
	return 'this is any url';
});

3、参数

  在路由中可以通过{}括起来表示将url中的某一项值作为参数传递给控制器或闭包函数:

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

  如果参数想要设置默认值,在{}包含的内容后面增加?:

Route::get('user/{id?}', function($id = '0'){
	return 'User-id-'.$id;
});

  如果想要对参数部分通过正则表达式约束,可以通过where方法,如下限制id必须为数字:

Route::get('user/{id?}', function($id = '0'){
	return 'User-id-'.$id;
})->where('id', '[0-9]+');

  如要对多个参数进行正则表达式约束,where中通过数组进行传参:

Route::get('user/{id}/{name}', function($id, $name){
	return 'User-id-' . $id . ' User-name-' . $name;
})->where(['id' => '[0-9]+', 'name' => '[A-Za-z]+']);

 4、中间件

  laravel中路由的调用位置在服务提供者app\Providers\RouteServiceProvider.php中做了配置,如api路由:

    protected function mapApiRoutes()
    {
        Route::prefix('api')
             ->middleware('api')
             ->namespace($this->namespace)
             ->group(base_path('routes/api.php'));
    }

  其中prefix表示以api为前缀,middleware表示调用api中间件,namespace指定控制器命名空间,group指定对应的路由文件。

  中间件的定义在app\Http\Kernel.php中设置,其中$middleware表示全局中间件,$middlewareGroups表示中间件组,$routeMiddleware表示路由中间件。api中间件组的throttle:60,1表示1分钟允许调用60次:

        'api' => [
            'throttle:60,1',
            'bindings',
        ],

  

posted @ 2019-01-21 15:36  fengzmh  阅读(1396)  评论(0编辑  收藏  举报