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
    });
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容

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