博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Laravel思维导图之Laravel HTTP路由、中间件、控制器
阅读量:6008 次
发布时间:2019-06-20

本文共 1542 字,大约阅读时间需要 5 分钟。

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 -

推荐阅读

转载地址:http://dspmx.baihongyu.com/

你可能感兴趣的文章
iOS第三方平台集成组件化
查看>>
404 Sum of Left Leaves
查看>>
提供SaaS Launchkit,快速定制,一云多端等能力,一云多端将通过小程序云实现...
查看>>
java b2b2c SpringCloud电子商务平台
查看>>
(十三)企业分布式微服务云SpringCloud SpringBoot mybatis-断路器聚合监控(Hystrix Turbine)...
查看>>
热更新
查看>>
亿万富翁Calvin Ayre梭哈BCH!
查看>>
map/reduce之间的shuffle,partition,combiner过程的详解
查看>>
ubuntu 手动配置interface上网
查看>>
Notes 迁移到SharePoint
查看>>
CentOS6.3修改yum源用本地系统光盘来安装gcc
查看>>
awk
查看>>
从零开始学Python-day5
查看>>
009Linux管理日常使用的基本命令
查看>>
MAC 查看java home目录
查看>>
两数之和(输入为二叉树) Two Sum IV - Input is a BST
查看>>
我的友情链接
查看>>
Java 常见异常类
查看>>
红帆移动OA for iPhone更新v1.0.2
查看>>
CentOS 6.5下编译安装httpd+mysql+php+phpMyAdmin
查看>>