Laravel 入门笔记(3)

Laravel 的路由定义在 routes 目录下,默认提供了三个文件,console.php、api.php、web.php,分别对应了控制台模式、api 模式和 web 网站三种不同模式下的路由使用。

Laravel 的路由支持任意一种 HTTP 请求方式,GET、POST、PUT、PATCH、DELETE、OPETIONS。

基本路由

只响应一个 URI 请求的路由形式。

Route::get('hello', function (){
    return 'Hello Laravel';
})

这是一个最简单的🌰,通过一个匿名函数来响应了请求,正常情况下我们会将请求的响应函数封装到一个 Controller 中,然后在此处进行配置。

可以通过注册路由来响应任何的 HTTP 请求,GET、POST、PATCH、PUT、DELETE、OPTIONS。
如果需要注册路由来响应多个 HTTP 请求,可以使用 match 或 any 方法。

// 响应 get 和 post 请求
Route::match(['get', 'post'], '/', function () {
    //
});

// 响应任意一种请求
Route::any('foo', function () {
    //
});

路由参数

在路由定义中可以设置自定义参数,用户输入的 URL 信息根据路由拆解后,将匹配参数的内容传递到回调函数中。路由参数又分为必选参数和可选参数,前者是必须完全一致匹配的,后者则不一定存在,需要提供默认参数,形式如下:

// 使用必选参数
Route::get('user/{id}', function ($userId){
    return 'User-' . $userId;
});

// 使用可选参数
Route::get('user/{name?}', function ($name = null){
    return 'User name is ' . $name;
});

使用路由参数的方式可以使得一个路由能够匹配多个 URL。
可以使用正则来对路由参数进行限制。

// 参数 id 只能是数字,不能是其他字符
Route::get('user/{id}', function($id)
{
    //
})
->where('id', '[0-9]+');

命名路由

顾名思义,就是给路由起一个易于理解也易于使用的名字,为生成 URL 和重定向提供便利。

Route::get('user/profile', function (){
    return 'User Profile';
})->name('profile');

分组路由

分组路由可以为同组的路由提供相同的中间件或命名空间等共享属性,无需再为每个路由单独指定。

// 指定中间件,可以指定多个
Route::group(['middleware' => 'auth'], function () {
    Route::get('/', function () {
        // 使用 Auth 中间件
    });

    Route::get('user/profile', function () {
        // 使用 Auth 中间件
    });
});

// 指定命名空间
Route::group(['namespace' => 'Admin'], function(){
    // 控制器在 "App\Http\Controllers\Admin" 命名空间下

    Route::group(['namespace' => 'User'], function(){
        // 控制器在 "App\Http\Controllers\Admin\User" 命名空间下
    });
});

// 指定路由前缀
Route::group(['prefix' => 'admin'], function () {
    Route::get('users', function () {
        // 匹配 "/admin/users" URL
    });
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,992评论 19 139
  • 路由 路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动。路由发生在OSI网络参考模型中的...
    Dearmadman阅读 2,891评论 2 9
  • 0.1配置1.模板继承2.控制器3.git4.支付宝支付的流程5.路由6.中间件7.请求8.laravel 学习笔...
    云龙789阅读 841评论 0 5
  • 原文链接 必备品 文档:Documentation API:API Reference 视频:Laracasts ...
    layjoy阅读 8,627评论 0 121
  • 又过了一年度的虐狗节,朋友说,不要叫狗,要叫汪。 现在也是我单身4年多了,其实说长点的话,也有快10年了,我几乎不...
    莫小黑猫阅读 202评论 20 4