Laravel 的路由
Posted 小伍
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 的路由相关的知识,希望对你有一定的参考价值。
路由文件
- routes/web.php:
web
界面路由,使用web
中间件组,提供会话状态和 CSRF 保护等功能。 - routes/api.php:
api
路由,分配api
中间件组,自动添加/api
URL 前缀,无状态。 - RouteServiceProvider:路由服务提供者。
路由示例
Route::get(\'foo\', function () {
return \'Hello World\';
});
Route::get(\'/user\', \'UserController@index\');
路由方法
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
# 重定向,默认会返回状态码 302
Route::redirect(\'/here\', \'/there\');
Route::redirect(\'/here\', \'/there\', 301);
# 视图路由
Route::view(\'/welcome\', \'welcome\');
Route::view(\'/welcome\', \'welcome\', [\'name\' => \'Taylor\']);
路由参数
Route::get(\'user/{id}\', function ($id) {
return \'User \'.$id;
});
Route::get(\'posts/{post}/comments/{comment}\', function ($postId, $commentId) {
//
});
# 可选参数
Route::get(\'user/{name?}\', function ($name = null) {
return $name;
});
# 参数约束
Route::get(\'user/{id}/{name}\', function ($id, $name) {
//
})->where([\'id\' => \'[0-9]+\', \'name\' => \'[a-z]+\']);
路由命名
Route::get(\'user/profile\', \'UserProfileController@show\')->name(\'profile\');
$url = route(\'profile\'); // 生成 URL...
return redirect()->route(\'profile\'); // 重定向...
# 带参数的命名路由
Route::get(\'user/{id}/profile\', function ($id) {})->name(\'profile\');
$url = route(\'profile\', [\'id\' => 1]);
路由组中间件
Route::middleware([\'first\', \'second\'])->group(function () {
Route::get(\'/\', function () {});
Route::get(\'user/profile\', function () {});
});
路由组命名空间
Route::namespace(\'Admin\')->group(function () {
// 在 「App\\Http\\Controllers\\Admin」 命名空间下的控制器
});
路由组子域名
Route::domain(\'{account}.myapp.com\')->group(function () {
Route::get(\'user/{id}\', function ($account, $id) {});
});
路由组前缀
Route::prefix(\'admin\')->group(function () {
Route::get(\'users\', function () {
// 匹配包含 「/admin/users」 的 URL
});
});
路由组名称前缀
Route::name(\'admin.\')->group(function () {
Route::get(\'users\', function () {
// 路由名为 「admin.users」
})->name(\'users\');
});
回退路由
# 没有匹配的路由处理请求时,才执行的路由,应放在最后
Route::fallback(function () {});
路由限流
# 每分钟访问频率不超过 60 次
Route::middleware(\'auth:api\', \'throttle:60,1\')->group(function () {
Route::get(\'/user\', function () {});
});
# 在 User 模型包含 rate_limit 属性指定动态限流
Route::middleware(\'auth:api\', \'throttle:rate_limit,1\')->group(function () {
Route::get(\'/user\', function () {});
});
# 访客每分钟最多 10 次请求,认证用户每分钟最多 60 次
Route::middleware(\'throttle:10|60,1\')->group(function () {
});
# 组合限流
Route::middleware(\'auth:api\', \'throttle:10|rate_limit,1\')->group(function () {
Route::get(\'/user\', function () {});
});
throttle 通过 $request->user() 判断是否为认证用户。throttle 通过 $request->user()->{$maxAttempts} 获取用户模型中的限流次数。
访问当前路由
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
以上是关于Laravel 的路由的主要内容,如果未能解决你的问题,请参考以下文章