2.Laravel入门(路由)

所有的 Laravel 路由都在 routes 目录中定义,这些文件都由框架自动加载。
routes/web.php 文件用于定义 web 界面的路由。这里面的路由会被分配给 web 中间件组,它提供了会话状态和 CSRF 保护等功能。
routes/api.php 中的路由都是无状态的,并且被分配了 api 中间件组。

大多数的应用构建,都是以在 routes/web.php 文件定义路由开始的。可以通过在浏览器中输入定义的路由 URL 来访问 routes/web.php 中定义的路由。例如,你可以在浏览器中输入 http://你的网址/user 来访问以下路由:

  1. use App\Http\Controllers\UserController;
  2. Route::get('/user', [UserController::class, 'index']);

定义在 routes/api.php 文件中的路由是被 RouteServiceProvider 嵌套在一个路由组内。在这个路由组中,将自动应用 /api URI 前缀,所以你无需手动将其应用于文件中的每个路由。你可以通过修改 RouteServiceProvider 类来修改前缀和其他路由组选项。

2.1.路由配置文件位置

image.png

2.2.路由文件的配置

2.2.1.默认根路由

/代表根路由 一般用于设置页面首页

Route::get('/',function(){
   return view('welcome');
});

2.2.2.路由定义格式

Route::请求方式(‘设定的请求url’,匿名函数或者控制器响应方法);

Route::get('hello',function (){
   return '我是hello';
});

image.png

2.2.3.请求方式有哪些?

官方文档:链接
路由允许你注册响应的请求有:

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

如果注册一个响应多个http请求时,可以用match方法或者any方法
match方法:表示匹配用户指定的几个请求类型(通过第一个参数去指定)的请求;
any方法:表示匹配路由所支持的全部请求;

Route::match(['get', 'post'], '/', function () {
    //
});

Route::any('/', function () {
    //
});

2.2.4.CSRF保护 跨站请求伪造(csrf)攻击

官方手册:链接
文件中定义的post;put’patch或者delete路由的任意html表单都需要包含一个CSRF令牌字段,否则请求会被拒绝访问,也可以通过设置白名单来访问;
image.png

2.3.路由参数

路由参数就是路由传递的参数
参数分为必选参数和可选参数.
必选参数:一旦定义了,在地址中就必须传递,不传递则会报错.

Route::get('text4/{id}',function ($id){
  //可以不带参数传递,设定有默认值
    return $id;
});
Route::get('/text3/{id?}',function($id=1){
  //必须传递参数不然报错
    return $id;
});

2.4.路由别名(重点) ->name

路由中设定:

Route::get('aaaaa/bbbbb',function (){
    return route('ab');
})->name('ab');

模板中应用:
image.png
网页显示:
image.png
扩展:查看系统已有路由命令
终端输出指令:php artisan route:list
image.png

2.5.路由群组 group

路由组允许你在大量路由之间共享路由属性,例如中间件,而不需要为每个路由单独定义这些属性。
嵌套的组尝试智能地「合并」其属性及其父组。中间件和 where 条件语句在附加名称和前缀时被合并。在适当的情况下,命名空间的分隔符和斜线会被自动添加到 URI 前缀中。

群组是为了管理方便,可以把他们放到一个路由中,这个组就称为路由群组

Route::group(['prefix'=>'admin'],function(){
    Route::group(['prefix'=>'member'],function (){
       Route::get('add',function (){
           //匹配"admin/member/add"
       });
    });
});
Route::group(['prefix'=>'index'],function (){
    Route::group(['prefix'=>'member'],function (){
        Route::get('add',function (){
            //匹配"index/member/add"
        });
    });
});