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

Laravel-HTTP层

上图列出了 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 请求的业务。

  1. 通过一行命令创建一个控制器
  2. 为这个控制器注册一个资源路由

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

资源控制器操作处理

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

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

资源控制器

依赖注入与控制器

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

下一步

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

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

- EOF -

推荐阅读

1.2k 声望
89 粉丝
0 条评论
推荐阅读
入行 10 年总结,作为开发必须知道的 Maven 实用技巧
Maven 是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具,简单的说就是用来管理项目所需要的依赖且管理项目构建的工具。

fatfoo12阅读 5.8k

初学后端,如何做好表结构设计?
这篇文章介绍了设计数据库表结构应该考虑的4个方面,还有优雅设计的6个原则,举了一个例子分享了我的设计思路,为了提高性能我们也要从多方面考虑缓存问题。

王中阳Go4阅读 1.7k评论 2

封面图
原生JavaScript实现的SPA单页应用(hash路由)
单页Web应用 (single page web application,SPA) ,就是只有一张Web页面的应用,是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序。

TANKING4阅读 854

封面图
一分钟搞明白!快速掌握 Go WebAssembly
最近因为各种奇怪的原因,更多的接触到了 WebAssembly。虽然之前很多博客也翻过写过各种文章,但总感觉欠些味道。于是今天梳理了一版,和大家一起展开学习。

煎鱼4阅读 2.2k

面试官:请说一下如何优化结构体的性能?
使用内存对齐机制优化结构体性能,妙啊!前言之前分享过2篇结构体文章:10秒改struct性能直接提升15%,产品姐姐都夸我好棒 和 Go语言空结构体这3种妙用,你知道吗? 得到了大家的好评。这篇继续分享进阶内容:结...

王中阳Go4阅读 3.8k评论 2

封面图
Laravel入门及实践,快速上手ThinkSNS+二次开发
【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们今天来说说Laravel的入门。

ThinkSNS1阅读 2.4k

我让chatGPT用PHP写一个MVC框架,不仅写出来,还能跑!
没想到写出来的框架确实挺简单的,但是又没觉得哪里不对,于是我尝试把这个框架放到服务器试试能不能跑起来,最后还真的可以跑起来,为了让大家能够看到这个框架的演示,我直接爬一个热搜,然后便于展示数据。

TANKING1阅读 1.7k

封面图
1.2k 声望
89 粉丝
宣传栏