Laravel思维导图之Laravel HTTP路由、中间件、控制器!

技术分享 2018年09月09日 阅读 641 我也庸俗


上图列出了 Laravel HTTP 层的相关知识大纲。由于目前自己的工作中网页、App、小程序等都采用前后台分离的方式实现,前端页面通过接口从后端获取数据并自己渲染,因此大纲中的 Session、视图、CSRF 保护几个部分将不做整理。又限于 HTTP 层的内容太多,我在这篇中将整理路由、中间件、控制器 3 部分内容。

1,路由


1)基本路由

构建最基本的路由只需要一个 URI 和一个闭包。所有的 Laravel 路由都在 routes 目录中的路由文件中定义。Laravel 默认提供 web.php 和 api.php 两个路由文件。前者定义 web 页面路由,默认应用 web 中间件组;后者定义无状态路由,会应用 api 中间件组。

Laravel 的 Route Facade 提供了 get, post, put, patch, delete, options, match, any 等路由方法来支持响应单个、多个、所有的 HTTP 方法。

2)路由参数

Laravel 可以通过多种方式对路由参数的必选、可选及具体格式进行约束

3)命名路由
Laravel 可以为指定路由或者控制器方法命名,也可以为已命名的路由生成 URL。

4)路由组
Laravel 的路由组允许共享路由属性,常用的路由组包括中间件、命名空间、子域名路由和路由前缀。

5)路由模型绑定
Laravel 路由模型绑定提供了一个方便的方法自动将模型注入到路由中,可以隐式绑定,也可以显式绑定。

隐式绑定时,默认绑定 Eloquent 模型的 ID 字段。通过模型的 getRouteKeyName 方法可以自定义绑定键名。

显式绑定则是使用路由的 model 方法来为已有参数声明 class 。

2.路由中间件
Laravel 中间件提供了一种方便的机制来过滤进入应用的 HTTP 请求。可以将中间件想象为一系列的「层」,HTTP 请求必须经过它们才会触发您的应用程序。每一层都可以检测接收的请求,甚至可以完全拒绝请求访问您的应用。

常见的中间件实例包括身份验证中间件、日志中间件、 CSRF 中间件等。多个单独的中间件还可以定义为中间件组。Laravel 带有开箱即用的 web 和 api 中间件组。


3,控制器
控制器能够将相关的请求处理逻辑组成一个单独的类。是在路由文件中以闭包的形式定义所有的请求处理逻辑之外的另一种形式。

1)资源控制器
Laravel 资源路由可以将典型的 CRUD 路由指定到一个控制器上,仅仅需要一行代码就可以实现,这大大提高了后台业务的开发效率。

以相片控制器为例,两个步骤可以定义好处理所有应用保存的相片 HTTP 请求的业务。

通过一行命令创建一个控制器
为这个控制器注册一个资源路由
资源路由的声明会创建的多个路由来处理各种各样的资源操作,这些操作都包含在控制器中了。


除了提供默认的操作外,可以根据需要对操作进行自定义。

1.可以只定义部分资源路由
2.可以重写默认的资源路由名称
3.可以重写资源路由的默认参数名称
4.可以实现资源 URI 的语言本地化
5.可以附加其他需要的资源控制器


4,依赖注入与控制器
Laravel 使用服务容器来解析所有的控制器。可以在控制器的构造方法中对任何依赖使用类型约束,也可以在控制器方法中使用依赖类型约束。

后面继续,说一说laravel,也会加入一些实例。

我也庸俗 我也庸俗 开发工程师@有赞科技公司

写了 159279 字,被 1 人关注,共写了 71 篇笔记

孤独了忙碌的人
推荐文章:
  • 大数据领域Flink 与 Spark之间的区别?

    学而不思则罔 思而不学则殆,2020年砥砺前行!前言大家都知道已经2020年了,也到了新的一年。作为一个主营电商的公司,年底都会很忙。所以最近的更新进度也停滞不前,本来准备大侃PHP设计模式的,但是因...

    豆浆大叔 21天前 3 吐槽 81 围观 技术分享
  • php如何实现钩子与实践案例

    前言学而不思则罔,思而不学则殆。30则而立,头顶正则脱光!昨天晚上,突然想起了PHP中的钩子如何使用?说实话,像dz,wordpress,TP,CI框架都已经集成了Hook钩子,尽管我不怎么使用框架以...

    豆浆大叔 1个月前 0 吐槽 43 围观 技术分享
  • Linux无法显示ip地址的解决办法

    今天想趁着有时间,用虚拟机调试一下lua脚本和其他的功能,结果启动虚拟机使用xshell连接不上,然后使用终端查看IP地址无法查看到,记录一下排查错误流程。查看IP地址使用ip addr 或者 ifc...

    豆浆大叔 1个月前 0 吐槽 89 围观 技术分享
  • 高并发性能指标QPS,TPS,RT,并发数,吞吐量是指什么?

    QPS,每秒查询QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系...

    豆浆大叔 1个月前 0 吐槽 177 围观 技术分享
  • 分享一些PHP常用的小算法

    下面分享一些最常见的算法,用PHP如何实现,拓展下知识面。冒泡排序function bubble_sort($arr) { $n=count($arr); for($i=0;$i<$n-1;$...

    我也庸俗 2个月前 0 吐槽 86 围观 技术分享
表情
  • [:821l1001:]
  • [:821l1002:]
  • [:821l1003:]
  • [:821l1004:]
  • [:821l1005:]
  • [:821l1006:]
  • [:821l1007:]
  • [:821l1008:]
  • [:821l1009:]
  • [:821l1010:]
  • [:821l1011:]
  • [:821l1012:]
  • [:821l1013:]
  • [:821l1014:]
  • [:821l1015:]
  • [:821l1016:]
  • [:821l1017:]
  • [:821l1018:]
  • [:821l1019:]
  • [:821l1020:]
  • [:821l1021:]
  • [:821l1022:]
  • [:821l1023:]
  • [:821l1024:]
  • [:821l1025:]
  • [:821l1026:]
  • [:821l1027:]
  • [:821l1028:]
  • [:821l1029:]
  • [:821l1030:]
  • [:821l1031:]
  • [:821l1032:]
  • [:821l1033:]
  • [:821l1034:]
  • [:821l1035:]
  • [:821l1036:]
  • [:821l1037:]
  • [:821l1038:]
  • [:821l1039:]
  • [:821l1040:]
  • [:821l1041:]
  • [:821l1042:]
  • [:821l1043:]
  • [:821l1044:]
  • [:821l1045:]
  • [:821l1046:]
  • [:821l1047:]
  • [:821l1048:]
  • [:821l1049:]
  • [:anger:]
  • [:applause:]
  • [:awkward:]
  • [:brokenheart:]
  • [:clown:]
  • [:confused:]
  • [:decline:]
  • [:diggingmouth:]
  • [:eyebrows:]
  • [:grinning:]
  • [:haha:]
  • [:ill:]
  • [:kiss:]
  • [:lascivious:]
  • [:laugh:]
  • [:love:]
  • [:lovely:]
  • [:rhinorrhea:]
  • [:smile:]
  • [:solid:]
  • [:strong:]
  • [:sweat:]
  • [:tearcollapse:]
  • [:tongue:]
  • [:uncomfortable:]
  • [:weak:]
  • [:worry:]
Tips:支持Markdown语法

0 个评论

抢座沙发~~~~
开发工程师 @ 有赞科技公司

登录

第三方账号登录:
GitHub
微信
微博