什么是路由?

大K简单的说下,路由是用户访问我们程序的一个入口,比方说 你在浏览器输入:www.myblogs.com/create 就会打开一个页面,我们接收到这一个请求后后台需要做一些事儿来反馈给用户一些东西。


1 路由的实例

首先呢laravel的路由定义在这个路径下:app/Http/routes.php

 /**
* 这是Laravel提供给我们的主界面路由,输入 localhost:8000(如果你用的artisan控制台)就可以看到主界面啦
*/
Route::get('/', function () {
return view('welcome');
}); /**
* 我们自己定义了get路由
* 浏览器输入 localhost:8000/get 就可以看到啦。
*/
Route::get('/get', function (){
return '这是我们自己定义的get路由';
}); /**
* 我们自己定义了post路由
*/
Route::get('/post', function (){
return '这是我们自己定义的post路由';
});

备注:路由方法不只有 get和post 还有put啊 delete啊等,具体可以根据实际情况使用。


2 匹配多种路由

 /**
* 使用match可以匹配多种方法到一个路径下, localhost:8000/hello 支持GET方法也支持POST方法。
*/
Route::match(['get', 'post'], '/hello', function (){
return 'hi~ 我是大K';
}); /**
* any 顾名思义 它可以匹配所有的方法。
*/
Route::any('/any', function (){
return 'any能匹配所有的方法';
});

3 路由参数

咱在写项目的时候啊 经常需要从路由中捕获参数以便之后的处理,那如何声明呢,继续看:

3.1 必选参数

 /**
* 参数的写法简单 加个花括号就行,然后在后面的闭包中捕获它就行。
*/
Route::get('/user/{id}', function ($id){
return '咱成功的拿到了一个用户ID:' . $id;
});

3.2 可选参数

 /**
* 可选参数只要在参数名后面跟个问号就好,然后在闭包中给它个默认值就好。
*/
Route::get('/user/{id}/name/{name?}/descriptions/{description?}', function ($user_id, $user_name = 'K', $user_description = null){
return '咱捕获了一堆参数 其中必选参数:'.$user_id.'可选的两个参数 名字:'.$user_name.'简介:'.$user_description;
});

3.3 使用正则约束参数

大K呢在上面两个例子中写的不太严谨,就那第一个例子说吧,一般id都是正整数的,可是第一个例子里咱输入一串鸟文它也能识别到,咱应该加串儿正则让它变得挑食点儿:

/**
* 参数的写法简单 加个花括号就行,然后在后面的闭包中捕获它就行。
* 后面跟了个where方法,里面限制了id参数必须是数字。
*/
Route::get('/user/{id}', function ($id){
return '咱成功的拿到了一个用户ID(现在我只能接受数字):' . $id;
})->where('id','[0-9]+'); /**
* 如果对多个参数进行约束,那咱就得在where方法中给数组啦。
*/
Route::get('/user/{id}/name/{name?}', function ($id, $name = 'k'){
return '咱成功的拿到了一个用户ID(现在我只能接受数字):' . $id . '名字:' . $name;
})->where(['id' => '[0-9]+','name' => '[a-zA-Z]+']);

3.4 全局约束(小拓展)

在实际开发中啊,一般参数为ID的一般都是整数,如果咱每个路由后面都跟个where是不是倍儿烦躁?甭担心,有一步到位的方法:在app/Providers/RouteServiceProvider.php 文件中boot方法,添加一段代码就行:

    public function boot(Router $router)
{
$router->pattern('id', '[0-9]+');
parent::boot($router);
}

然后修改一下刚刚的例子:

Route::get('/user/{id}', function ($id){
return '咱成功的拿到了一个用户ID(现在我只能接受数字):' . $id;
}); Route::get('/user/{id}/name/{name?}', function ($id, $name = 'k'){
return '咱成功的拿到了一个用户ID(现在我只能接受数字):' . $id . '名字:' . $name;
})->where('name','[A-Za-z]+');

4 给路由起名字

为啥要给路由起名字?咱想一下这么一个场景啊 : 进到某一个路由后 我们需要在数据库中更新一条信息,当信息更新完了后要跳转到另外一条路由,这条路由的路径是:localhost:8000/xxxx/sdfsa/xasfes/xaefsggd/xaeqwes/xadfase(当然啦 我是乱敲的) 难道我们要手动打xxxx/sdfsa/xa...么?或者你可以说 copy一下,但是我们给这条路由起一个名字,直接使用名字来跳转 岂不美哉?

/**
* 现在比如说 用户在更新他的名字 拿到名字后在数据库中更新 更新完了跳转到另一个路由
*/
Route::get('/user/{id}/name/{name}', function ($id, $name){
// 更新数据库操作
// ...
// 跳转
return redirect()->route('showUser',['name' => $name]);
})->where('name','[A-Za-z]+'); /**
* 另一条路由 (路径瞎写的啊)
* 在路径后面加一个数组 as=>router_name 就是这么个流程。
*/
Route::get('/admin/private/user/show/{name}', ['as' => 'showUser', function($name){
return '哇 你的名字已经更新完啦:'.$name;
}]);

今儿大K就先写到这,太晚了,明儿咱学学路由分组 多评论哦 咱一起进步。

Laravel5.1 路由 -基础的更多相关文章

  1. laravel5.1框架基础之Blade模板继承简单使用方法分析

    本文实例讲述了laravel5.1框架基础之Blade模板继承简单使用方法.分享给大家供大家参考,具体如下: 模板继承什么用? 自然是增强基础页面的复用,有利于页面文档的条理,也便于更改多处使用的内容 ...

  2. 一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器

    一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字 ...

  3. react router @4 和 vue路由 详解(一)vue路由基础和使用

    完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 1.vue路由基础和使用 a.大概目录 我这里建了一个router文件夹,文件夹下有in ...

  4. django第三天(路由基础和路由分配)

    路由基础 url(正则路径,视图函数地址,默认关键字参数,路由别名) 路由由上而下匹配, ""可以匹配任意路由 "^$"来匹配"/" url ...

  5. HCIA-Datacom 2.1 实验一:IPv4编址及IPv4路由基础实验

    实验目的 掌握接口IPv4地址的配置方法 理解LoopBack接口的作用与含义 理解直连路由的产生原则 掌握静态路由的配置方法并理解其生效的条件 掌握通过PING工具测试网络层联通性 掌握 ...

  6. laravel路由基础

    基础: 所有的laravel路由都定义在 app/Http/routes.php 这个文件里,会被框架自带加载.简单的路由会接受一个URI和一个Closure类. Route::get('foo', ...

  7. Go 语言中的 Http 路由基础

    最近在写一些 Go 语言的 Web 应用,因为 Go 语言中的 Web 应用和 Python 中的不太一样,具体的区别应该和语言的动态性是有所联系的,同时,也和语言的内置库支持有所联系,所以这就导致了 ...

  8. Vue-router路由基础总结(一)

    一.安装 npm下载:npm install vue-router 如果在一个模块化工程中使用它,必须要通过 Vue.use() 明确地安装路由功能:在你的文件夹下的 src 文件夹下的 main.j ...

  9. Laravel5.1 路由 -路由分组

    路由分组有啥好处? 有时候啊 一大堆路由它们都有共同的地方,比如都使用一个中间件(过两天写)或是前缀都一样,避免代码重复 我们可以将他们分到一组中. 1 路由分组可以共享哪些属性? 中间件 middl ...

随机推荐

  1. IIS支持伪静态(windows 2003)

    IIS配置支持伪静态 ISAPI Rewrite 第一:首先我们需要下载一个ISAPI_Rewrite,有精简版和完全版,一般精简版只能对服务器全局进行配置,而完整版可以对服务器上的各个网站进行伪静态 ...

  2. docker实战——构建Jekyll

    构建第一个应用 要构建的第一个应用是Jekyll框架的自定义网站.我们会构建一下两个镜像. 一个镜像安装Jekyll以及其他用于构建Jekyll网站的必要的软件包. 一个镜像通过Apache来让Jek ...

  3. Servlet基础梳理(四)

    本篇说一下session和路径的问题. session: 是一种在server端保存http状态信息的方案.眼下有两种实现方式:基于Cookie或者URL重写. 基于cookie:第一次訪问serve ...

  4. 2D游戏平滑的迷雾战争效果

    近期刚好有做2D游戏的点光源效果,然后就扩展一下.研究了一下战争迷雾的效果.主要是想实现相似魔兽争霸那种人物走动,然后黑色的战争迷雾随着人物的移动渐渐打开的效果.使用具有渐变透明图片作为光源来使得战争 ...

  5. Oracle,跳出游标循环

    1,跳出游标的循环,不执行遍历了. 方法一:goto for c_row in 游标 loop if 条件 then dbms_output.put_line('测试跳出循环'); goto brea ...

  6. spring揭秘读书笔记----spring的ioc容器之BeanFactory

    spring的ioc容器是一种特殊的Ioc Service Provider(ioc服务提供者),如果把普通的ioc容器认为是工厂模式(其实很相似),那spring的ioc容器只是让这个工厂的功能更强 ...

  7. SVN钩子 之 pre-commit

    http://files.cnblogs.com/lyl6796910/pre-commit%E9%92%A9%E5%AD%90.rar 我用的是Windows版本的SVN:VisualSVN Ser ...

  8. atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p

    atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p 1. 推送所设计到底功能1 1.1. 内容压缩1 1.2. 多引擎1 2. reg  ,设置appkey and pw ...

  9. 189. Rotate Array【easy】

    189. Rotate Array[easy] Rotate an array of n elements to the right by k steps. For example, with n = ...

  10. 62. Search in Rotated Sorted Array【medium】

    62. Search in Rotated Sorted Array[medium] Suppose a sorted array is rotated at some pivot unknown t ...