Laravel 路由定义与管理
Laravel 的路由系统是框架的核心之一,它提供了一种优雅的方式来管理 Web 请求,并将其映射到相应的控制器或闭包函数。本文将详细介绍 Laravel 路由的定义、类型及其高级功能。
1. 路由基础
Laravel 的路由定义位于 routes/web.php (用于 Web 应用) 和 routes/api.php (用于 API 请求) 文件中。
基本路由
最简单的路由可以直接返回字符串或视图:
use Illuminate\Support\Facades\Route;Route::get('/', function () {    
    return '欢迎访问 Laravel 网站!';
});也可以直接返回视图:
Route::get('/about', function () {    
    return view('about');
});2. 路由类型
Laravel 支持多种 HTTP 请求方法:
| HTTP 方法 | Laravel 语法 | 
|---|---|
| GET | Route::get('/path', callback); | 
| POST | Route::post('/path', callback); | 
| PUT | Route::put('/path', callback); | 
| PATCH | Route::patch('/path', callback); | 
| DELETE | Route::delete('/path', callback); | 
| ANY | Route::any('/path', callback); | 
| MATCH | Route::match(['get', 'post'], '/path', callback); | 
示例
Route::post('/submit', function () {    
    return '表单已提交!';
    });
Route::match(['get', 'post'], '/profile', function () {    
       return '支持 GET 和 POST 访问';
});3. 路由参数
必选参数
路由可以包含动态参数:
Route::get('/user/{id}', function ($id) {    
    return "用户ID:$id";
});访问 /user/5 时,返回 用户ID:5。
可选参数
加上 ? 号并设置默认值:
Route::get('/user/{name?}', function ($name = '游客') {    
    return "你好,$name";
});
});访问 /user 时,返回 你好,游客。
参数约束
使用正则表达式限制参数格式:
Route::get('/product/{id}', function ($id) {    
    return "产品 ID:$id";
})->where('id', '[0-9]+');4. 路由命名
给路由定义名称,方便在代码中使用:
Route::get('/dashboard', function () {    
    return '仪表盘';
})->name('dashboard');在 Blade 视图中使用:
<a href="{{ route('dashboard') }}">访问仪表盘</a>5. 路由分组
中间件
Route::middleware(['auth'])->group(function () {    
   Route::get('/profile', function () {        
        return '个人中心';
  });    
  Route::get('/settings', function () {        
      return '设置';
  });
});所有路由都应用 auth 中间件。
命名空间
Route::namespace('Admin')->group(function () {    
    Route::get('/dashboard', 'DashboardController@index');
});前缀
Route::prefix('admin')->group(function () {    
    Route::get('/users', function () {        
        return '管理员用户列表';
       });
});访问 /admin/users 即可访问该路由。
6. 资源路由
Laravel 提供 Route::resource() 方便快捷地生成 CRUD 路由:
Route::resource('posts', 'PostController');自动生成以下路由:
| HTTP 方法 | URL | 控制器方法 | 
|---|---|---|
| GET | /posts | index | 
| GET | /posts/create | create | 
| POST | /posts | store | 
| GET | /posts/{post} | show | 
| GET | /posts/{post}/edit | edit | 
| PUT/PATCH | /posts/{post} | update | 
| DELETE | /posts/{post} | destroy | 
7. API 路由
API 路由定义在 routes/api.php 中,默认使用 api 中间件:
Route::middleware('auth:api')->get('/user', function (Request $request) {    
    return $request->user();
});Laravel 提供 apiResource() 生成 RESTful API:
Route::apiResource('posts', 'Api\PostController');它类似 resource(),但不包括 create 和 edit 路由。
8. 路由缓存
在生产环境中,推荐使用路由缓存优化性能:
php artisan route:cache # 生成缓存 php artisan route:clear # 清除缓存
总结
Laravel 的路由系统非常强大,提供了基础路由、参数、命名、分组、资源路由以及 API 路由等丰富功能。合理使用路由可以提高代码可维护性,让你的 Laravel 应用更加清晰高效。
如果你正在学习 Laravel,希望这篇文章能帮你掌握路由管理的核心要点!🚀
1、部分文章来源于网络,仅作为参考。 2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!

