Laravel 路由定义与管理

阅读:47 2025-03-21

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 语法
GETRoute::get('/path', callback);
POSTRoute::post('/path', callback);
PUTRoute::put('/path', callback);
PATCHRoute::patch('/path', callback);
DELETERoute::delete('/path', callback);
ANYRoute::any('/path', callback);
MATCHRoute::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/postsindex
GET/posts/createcreate
POST/postsstore
GET/posts/{post}show
GET/posts/{post}/editedit
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(),但不包括 createedit 路由。


8. 路由缓存

在生产环境中,推荐使用路由缓存优化性能:

php artisan route:cache   # 生成缓存
php artisan route:clear   # 清除缓存

总结

Laravel 的路由系统非常强大,提供了基础路由、参数、命名、分组、资源路由以及 API 路由等丰富功能。合理使用路由可以提高代码可维护性,让你的 Laravel 应用更加清晰高效。

如果你正在学习 Laravel,希望这篇文章能帮你掌握路由管理的核心要点!🚀


标签: Laravel
声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!