首页
学习
活动
专区
圈层
工具
发布

深入浅出 Laravel 路由执行原理

这篇文章我们将学习 Laravel 项目中一个很重要的主题 -- 「路由」。 可以说几乎所有的框架都会涉及到「路由」的处理,简单一点讲就将用户请求的 url 分配到对应的处理程序。...在之前的源码清单中,我们看到在 map 方法内部会分别调用并执行了 mapWebRoutes() 和 mapApiRoutes() 这两个方法,它们的工作是分别加载 Web 路由和 Api 路由配置。...所以我们需要深入到 handle 才能知道 HTTP 请求是如何被匹配路由和处理回调(或控制器)的。...另外补充两篇有关中间件的文章 Laravel 中间件原理 和 Laravel 管道流原理,可以去研究下 Laravel 中间件如何工作的。...判断路由处理函数是否为控制器。

7.8K30

Laravel源码分析之Route

路由是外界访问Laravel应用程序的通路或者说路由定义了Laravel的应用程序向外界提供服务的具体方式:通过指定的URI、HTTP请求方法以及路由参数(可选)才能正确访问到路由定义的处理程序。...无论URI对应的处理程序是一个简单的闭包还是说是控制器方法没有对应的路由外界都访问不到他们,今天我们就来看看Laravel是如何来设计和实现路由的。...通过map方法我们能看到laravel将路由分为两个大组:api、web。这两个部分的路由分别写在两个文件中:routes/web.php、routes/api.php。...放在多个文件里能更方便地管理API路由和与WEB路由 路由注册 我们通常都是用Route这个Facade调用静态方法get, post, head, options, put, patch, delete...,runRoute的过程通过上面的源码可以看到其实也很复杂, 会收集路由和控制器里的中间件,将请求通过中间件过滤才会最终到达目的地路由,执行目的路由地 run()方法,里面会判断路由对应的是一个控制器方法还是闭包然后进行相应地调用

2.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHP-web框架Laravel-中间件(一)

    在Laravel中,中间件是处理HTTP请求的一种机制。它可以用来检查请求是否满足某些条件,比如是否已经进行了身份验证或者是否有足够的权限来访问某个资源。...中间件的基本使用在Laravel中,中间件可以通过路由或控制器来指定。...这意味着只有经过身份验证的用户才能访问该路由。中间件类Laravel中的中间件实际上是PHP类。在创建中间件时,可以选择手动创建类,也可以使用Laravel提供的中间件生成器来自动生成。...web中间件在这个示例中,我们定义了两个中间件组:web和api。web中间件组包含一组用于Web应用程序的中间件,如加密Cookie、启动会话和验证CSRF令牌。...api中间件组包含一组用于API的中间件,如速率限制和API身份验证。在路由中使用中间件。可以在路由定义中使用中间件。

    4.6K31

    3分钟短文:Laravel控制器用法光速入门

    引言 上一章我们介绍了laravel路由注册中的“花拳绣腿”,样样都是那么优雅而实用。路由传递过来的参数,在经过中间件验证和导向之后,应该去控制器接受处理了。...接下来,为了这个方法可以被访问到,需要路由的配合,在 routes/web.php 文件内添加一条路由地址: Route::get('/', 'TasksController@home'); 编辑完成并保存后...,其实都包含在了laravel提供的资源路由之内,我们创建一个资源路由相关的控制器,并初始化框架代码,可以使用命令实现: php artisan make:controller TaskController...要查看系统内所有已注册的路由,可以使用下面的指令: php artisan route:list 写在最后 本文浅显地介绍了laravel中控制器的使用,最重要的是,resource路由方法默认的骨架代码...,为我们统一写作api接口提供了标准,在团队协作中尤其重要。

    2.1K10

    3分钟短文:Laravel控制器用法光速入门

    引言 上一章我们介绍了laravel路由注册中的“花拳绣腿”,样样都是那么优雅而实用。路由传递过来的参数,在经过中间件验证和导向之后,应该去控制器接受处理了。...接下来,为了这个方法可以被访问到,需要路由的配合,在 routes/web.php 文件内添加一条路由地址: Route::get('/', 'TasksController@home'); 编辑完成并保存后...,其实都包含在了laravel提供的资源路由之内,我们创建一个资源路由相关的控制器,并初始化框架代码,可以使用命令实现: php artisan make:controller TaskController...要查看系统内所有已注册的路由,可以使用下面的指令: php artisan route:list 写在最后 本文浅显地介绍了laravel中控制器的使用,最重要的是,resource路由方法默认的骨架代码...,为我们统一写作api接口提供了标准,在团队协作中尤其重要。

    2.3K11

    在 Laravel 控制器中进行表单请求字段验证

    在 Web 应用中,用户提交的数据往往是不可预测的,因此一个非常常见的需求是对用户提交的表单请求进行验证,以确保用户输入的是我们所期望的数据格式。...很多 Web 框架都对此功能专门提供了工具集,Laravel 也不例外,而且这个工具集异常丰富,基本上涵盖了目前主流的所有验证规则,即使是一些非常个性化的验证,也可以基于 Laravel 验证类的扩展功能来自定义验证规则...作为一个灵活的框架,Laravel 提供了多种方式对表单请求进行验证,你可以在控制器中通过 $this->validate() 方法验证用户请求,也可以通过单独的表单验证类定义验证规则,再将其注入到相应的控制器方法...首先我们调整下 routes/web.php 中的表单提交路由,将其命名为 form.submit: Route::post('form', 'RequestController@form')->name...我们可以在 $this->validate() 方法中的设置第三个参数来自定义错误消息: $this->validate($request, [ 'title' => 'bail|required

    8.2K10

    Laravel 框架入门

    无论是初学者还是经验丰富的开发者,Laravel 都能帮助你更高效地开发现代化的 Web 应用。...Laravel 是一个基于 PHP 的开源 Web 应用框架,它遵循 MVC(Model-View-Controller)设计模式,提供了许多方便的功能,使得 Web 开发变得更加简单和高效。...路由与控制器Laravel 的路由是应用的入口,用来定义 URL 和处理请求的控制器。通过路由,你可以将请求映射到控制器中的方法。...;});这段代码定义了一个简单的路由,当用户访问根目录时,会返回 Hello, Laravel!。使用控制器处理请求我们可以将逻辑从路由中提取到控制器。...Blade 模板引擎Laravel 提供了一个简单易用的模板引擎,叫做 Blade。Blade 让你在视图中更方便地使用控制结构(如条件判断、循环等)并且避免了直接在 HTML 中写 PHP 代码。

    2.5K00

    Laravel学习笔记(一)——初次见面,多多关照!

    Laravel 默认提供了四个路由文件用于给不同的入口使用:web.php、api.php、 console.php 和 channels.php。...,如果应用无需提供无状态的、RESTful 风格的 API,那么路由基本上都要定义在 web.php 文件中。...api.php文件 api.php 文件包含的路由位于 api 中间件组约束之内,支持频率限制功能,这些路由是无状态的,所以请求通过这些路由进入应用需要通过 token 进行认证并且不能访问 Session...Laravel中还有一个路由,所有请求都通过路由,再由路由决定将该请求转发至控制器还是直接打回。...其实路由就相当于大餐厅里面的门童,门童看到客人后, 若是衣衫不整,就拦下来并告诉他”我们这里是高级酒店,请着正装进入!

    2.9K00

    通过 Laravel 创建一个 Vue 单页面应用(三)

    我们将通过演示在 vue-router 进入一个路由之前,如何异步加载数据来继续使用 Laravel 构建我们的 Vue SPA。...我习惯使用 MySQL,但是你可以使用任何你想用的数据库驱动! UsersIndex.vue 路由组件在生命周期 created() 中通过 API 加载数据。...如果你是 Laravel 的新手,你可以查阅在 数据库入门 上的大量文档。...如果你遇到了问题,请遵循文档,这样可以使您的数据库更容易地工作。 一旦你配置好了数据库连接,你可以迁移你的数据表和添加填充数据。...,可以从数据库中获取真实数据,还有一个简单的分页组件,该组件在后端使用 Laravel 的 API 模型资源进行简单的分页链接并将数据包装在 数据 键中。

    7.2K10

    【Laravel系列3.4】中间件在路由与控制器中的应用

    我们还是以请求为例,一个请求要经过接收、处理、返回这三个过程,而中间件,就可以看作是夹在这三个操作中间的一些操作。...比如说,我们的请求发过来,在没有到达路由或者控制器的时候,就可以通过中间件做一些预判,像参数合法不合法、登录状态的判断之类的。...当然,一般情况下,响应数据我们还是尽量在控制器那边搞定,而后置中间件最大的好处是可以针对一次请求进行完整的请求和响应的日志记录。不过这些还是以业务功能的需求为基础,大家只要知道有这个功能就可以了。...其实从名字就可以看出,middlewareGroups 是为中间件分组的,里面默认定义了两个中间件组,分别是 web 和 api 。...其实他们对应的就是路由文件夹下的 api.php 和 web.php 所要加载的中间件。

    4.5K50

    2018年laravel教程第1节搭建项目phpstorm添加laravel代码提示新建路由和控制器渲染页面定义公共模板文件公共头部和底部小结

    laravel 不管你用的是哪个框架,作为PHP开发者,都很有必要学laravel laravel虽好,入门门槛却不低,尤其对于习惯了使用thinkphp的同学,切换到laravel还是有些难度的,因此...搭建项目 laravel对于安装环境的要求是: PHP >= 7.0.0 PHP OpenSSL 扩展 PHP PDO 扩展 PHP Mbstring 扩展 PHP Tokenizer 扩展 PHP XML...代码提示 新建路由和控制器 laravel的路由配置文件是:LaravelStudy/routes/web.php 我们重新定义路由: Route::get('/', 'SiteController@index...,可以理解为给路由起了个别名,这个便于扩展,比如,现在登录业务对应的是SiteController@login,以后可能随着业务的改变,要改为UserControoler@login,如果是以硬编码的形式写路由...LaravelStudy/routes/web.php Route::get('login', 'SiteController@login')->name('login'); // 命名路由 Route

    2.7K20

    PHP-Laravel控制器使用(C)

    命名可以参考Auth文件夹中给定的示例文件: ? 文件的命名方式:大驼峰+Controller.php 友情提示:在写的时候不要带“+”。 3、结构代码如何书写?...【重点】 注意:其控制器基础结构代码,不需要自己去手动编写,可以通过artisan命令行来自动生成。...注意:控制器可以分目录管理。 4、控制器路由(项目以该方式为主) 即,如何使用路由规则调用控制器下的方法,而不再走回调函数。...在laravel中如果需要使用facades的话,但是又不想写那么长的引入操作: Use Illuminate\Support\Facades\Input 则可以在config/app.php中定义长串的别名...在Laravel中除了Input类可以获取用户的输入,Request也可以获取用户输入。

    1.9K10
    领券