资讯专栏INFORMATION COLUMN

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

linkin / 2651人阅读

摘要:又限于层的内容太多,我在这篇中将整理路由中间件控制器部分内容。前者定义页面路由,默认应用中间件组后者定义无状态路由,会应用中间件组。命名路由可以为指定路由或者控制器方法命名,也可以为已命名的路由生成。

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

0x00 路由

基本路由

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

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

路由参数

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

命名路由

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

路由组

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

路由模型绑定

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

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

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

0x01 路由中间件

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

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

0x02 控制器

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

资源控制器

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

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

通过一行命令创建一个控制器

为这个控制器注册一个资源路由

资源路由的声明会创建的多个路由来处理各种各样的资源操作,这些操作都包含在控制器中了。

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

可以只定义部分资源路由

可以重写默认的资源路由名称

可以重写资源路由的默认参数名称

可以实现资源 URI 的语言本地化

可以附加其他需要的资源控制器

依赖注入与控制器

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

下一步

在下一期中,我将整理 Laravel HTTP 请求、响应及表单验证的相关知识。这些是所有网络应用最重要的部分。

思维导图在导出的过程中会变得模糊,如有需要高清的思维导图源文件,请加微信公众号:up2048,并回复“脑图”来获取。

- EOF -

推荐阅读

Laravel思维导图之Laravel核心概念

Laravel思维导图之Laravel入门指南

十五张思维导图带你快速学习PHP言语基础

我心目中的网络接口设计到底是怎样的过程?

多平台统一用户系统设计

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25735.html

相关文章

  • Laravel思维图之HTTP请求、响应、表单验证

    摘要:今天我来分享中层关于请求响应与表单验证的知识。手动创建验证请求之前的内容是直接使用的方法来实现表单验证。下一步到这篇为止,我完成了入门指南核心概念层的路由中间件控制器请求响应表单验证的学习和整理。 showImg(https://segmentfault.com/img/remote/1460000010882838); 今天我来分享 Laravel 中 HTTP 层关于请求、响应与表...

    lewif 评论0 收藏0
  • 记一次 Laravel 应用性能调优经历

    摘要:为了一探究竟,于是开启了这次应用性能调优之旅。使用即时编译器和都能轻轻松松的让你的应用程序在不用做任何修改的情况下,直接提高或者更高的性能。 这是一份事后的总结。在经历了调优过程踩的很多坑之后,我们最终完善并实施了初步的性能测试方案,通过真实的测试数据归纳出了 Laravel 开发过程中的一些实践技巧。 0x00 源起 最近有同事反馈 Laravel 写的应用程序响应有点慢、20几个并...

    warkiz 评论0 收藏0
  • Laravel思维图之Laravel核心概念

    摘要:的核心概念包括服务容器服务提供者门面契约。所有服务提供者都需要继承类。可以为服务提供者的方法设置类型提示。方法将在所有其他服务提供者均已注册之后调用。同样会整理成思维导图的形式以方便记忆与回顾。 showImg(https://segmentfault.com/img/remote/1460000010771201); Laravel 的核心概念包括:服务容器、服务提供者、门面(Fac...

    wthee 评论0 收藏0
  • Laravel思维图之Laravel入门指南

    摘要:本系列思维导图整理自版本官方文档。思维导图导出为图片时会导致其变模糊。需要高清的思维导图源文件,请关注微信公众号,并回复精进脑图来获取。今天我们就通过张思维导图来快速看入门指南。这些文章都将首发在微信公众号上。 showImg(https://segmentfault.com/img/remote/1460000010774258); 本系列思维导图整理自 Laravel 5.4 版...

    vibiu 评论0 收藏0
  • Laravel 5.0 的新特性

    摘要:原文译文译者包括超过个新特性。这个默认命名空间可以很方便的使用命令更换为其他名字。事实上,对于负责的任务,使用是非常好的方法。其它新特性正在翻译中,您可以在关注最新的翻译动态 原文: http://laravel.com/docs/master/releases#laravel-5.0 译文: http://discuss.flarum.org.cn/24-laravel-5 译者: ...

    qpal 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<