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

Laravel-HTTP层

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

0x00 路由

路由

基本路由

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

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

基本路由

路由参数

Laravel 能够经过多种方式对路由参数的必选、可选及具体格式进行约束。小程序

路由参数

命名路由

Laravel 能够为指定路由或者控制器方法命名,也能够为已命名的路由生成 URL。后端

命名路由

路由组

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

路由组

路由模型绑定

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

隐式绑定时,默认绑定 Eloquent 模型的 ID 字段。经过模型的 getRouteKeyName 方法能够自定义绑定键名。网络

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

路由模型绑定

0x01 路由中间件

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

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

路由中间件

0x02 控制器

控制器可以将相关的请求处理逻辑组成一个单独的类。是在路由文件中以闭包的形式定义全部的请求处理逻辑以外的另外一种形式。

资源控制器

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

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

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

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

资源控制器操做处理

除了提供默认的操做外,能够根据须要对操做进行自定义。

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

资源控制器

依赖注入与控制器

Laravel 使用服务容器来解析全部的控制器。能够在控制器的构造方法中对任何依赖使用类型约束,也能够在控制器方法中使用依赖类型约束。

下一步

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

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

- EOF -

推荐阅读

相关文章
相关标签/搜索