2.Laravel入门(路由)
所有的 Laravel 路由都在 routes 目录中定义,这些文件都由框架自动加载。
routes/web.php 文件用于定义 web 界面的路由。这里面的路由会被分配给 web 中间件组,它提供了会话状态和 CSRF 保护等功能。
routes/api.php 中的路由都是无状态的,并且被分配了 api 中间件组。
大多数的应用构建,都是以在 routes/web.php 文件定义路由开始的。可以通过在浏览器中输入定义的路由 URL 来访问 routes/web.php 中定义的路由。例如,你可以在浏览器中输入 http://你的网址/user 来访问以下路由:
use App\Http\Controllers\UserController;Route::get('/user', [UserController::class, 'index']);
定义在 routes/api.php 文件中的路由是被 RouteServiceProvider 嵌套在一个路由组内。在这个路由组中,将自动应用 /api URI 前缀,所以你无需手动将其应用于文件中的每个路由。你可以通过修改 RouteServiceProvider 类来修改前缀和其他路由组选项。
2.1.路由配置文件位置
2.2.路由文件的配置
2.2.1.默认根路由
/代表根路由 一般用于设置页面首页
Route::get('/',function(){
return view('welcome');
});
2.2.2.路由定义格式
Route::请求方式(‘设定的请求url’,匿名函数或者控制器响应方法);
Route::get('hello',function (){
return '我是hello';
});
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令牌字段,否则请求会被拒绝访问,也可以通过设置白名单来访问;
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');
模板中应用:
网页显示:
扩展:查看系统已有路由命令
终端输出指令:php artisan route:list
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"
});
});
});
