laravel的路由操作方法

本文深入讲解Laravel框架中的路由操作,包括基本路由设置、参数处理、路由命名、分组、资源路由、模型绑定及频率限制等高级特性,帮助开发者全面掌握Laravel路由管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


简单路由操作:


1、 利用匿名函数直接操作相关路由

Route::get('/', function () { 
    return 'Hello, World!'; 
});
上述路由会返回一个具有hello,world的页面(Laravel 会通过内置的响应栈和中间件对返回内容进行处理。)

2、 路由参数以及限定(where)

Route::get('page/{name}', function ($name) {
    return '页面名称: ' . $name;
})->where('name', '[A-Za-z]+');

利用{参数名}提取url中的参数,也可以使用where对参数进行过滤不符合规则的则返回404页面

3、 利用路由命名方式对路由的名称加以修改

Route::get('user/{id?}', function ($id = 1) {
    return "用户ID: " . $id;
})->name('user.profile');

这样访问user.profile就是访问user这个路由
前端视图模板中可以通过辅助函数 route 并传入路由名称(如果有路由参数,则以数组方式作为第二个参数传入)来引用该路由:

<a href="{{ route('user.profile', ['id' => 100]) }}">
// 输出:http://blog.test/user/100

4、 利用路由分组为路由分类,主要使用在路由具有相同的中间件
路由可以直接使用中间,但是如果有多个路由使用同一个中间件还使用下列方法的话不仅不美观而且可读性差

Route::get('/', function () {
    //
})->middleware('token', 'auth');

所以利用路由分组,实例如下:

Route::group(['middleware' => 'auth'], function () { 
    Route::get('dashboard', function () { 
        return view('dashboard'); 
    }); 
    Route::get('account', function () { 
        return view('account'); 
    }); 
});

5、 相对复杂的路由可以利用以下:

Route::get('/task', 'TaskController@home');

以get的方式通过路由访问TaskController的home方法

6、 资源路由:

HTTP请求方式URL控制器方法路由命名业务逻辑描述
GETpostindex()post.index展示所有文章
GETpost/createcreate()post.create发布文章表单页面
POSTpoststore()post.store获取表单提交数据并保存新文章
GETpost/{post}show()post.show展示单个文章
GETpost/{id}/editedit()post.edit编辑文章表单页面
PUTpost/{id}update()post.update获取编辑表单输入并更新文章
DELETEpost/{id}destroy()post.desc删除单个文章

简单理解就是通过强化一个控制器通过上面的表格对资源进行控制。已经了解了 Laravel 中对资源路由的命名约定,Laravel 还为我们提供了一个 Route::resource 方法用于一次注册包含上面列出的所有路由,并且遵循上述所有约定:

Route::resource('post', 'PostController');

就是把上述表格中的各个方式通过resource“封装”一下。

7、 路由模型绑定(就是把路由和特定的模型进行绑定当路由传回参数时直接调用模型进行查询而不用再在后台进行复杂的代码操作)

Route::get('task/{task}', function (\App\Models\Task $task) {
    dd($task); // 打印 $task 明细
});

通过上述的路由设置可以直接从路由得到task参数然后直接传送给模型查询然后直接返回实例

8、 兜底路由(就是处理未定义路由,替代404页面)

Route::fallback(function () {
    return '我是最后的屏障';
});

9、 频率限制(一个是在某些需要验证/认证的页面限制用户失败尝试次数,提高系统的安全性,另一个是避免非正常用户(比如爬虫)对路由的过度频繁访问)

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

利用上述的中间件完成操作60表示频率,1表示每1分钟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值