学习参考文章 https://learnku.com/articles/13622/the-principle-of-laravel-routing-execution

<?php

namespace app\common\providers;

use app\common\services\Check;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;

class RouteServiceProvider extends ServiceProvider
{
/**
* This namespace is applied to your controller routes. 定义当前 Laravel 应用控制器路由的命名空间。
*/
protected $namespace = 'app';

/**
* Define your route model bindings, pattern filters, etc. 定义路由绑定、正则过滤等。
*/
public function boot()
{

parent::boot();
}

/**
* Define the routes for the application. 定义应用的路由。
*/
public function map()
{
if (env('APP_Framework') == 'platform') {
$this->mapWebBootRoutes();
$this->mapPlatformRoutes();
$this->mapShopRoutes();
$this->mapApiRoutes();
} else {
$this->mapWebRoutes();
}
}

/**
* Define the "web" routes for the application. 定义应用 Web 路由。
*
* These routes all receive session state, CSRF protection, etc. 这里定义的所有路由都会处理会话状态和 CSRF 防护等处理。
*/
protected function mapWebRoutes()
{
Route::group([
'middleware' => ['web'],
'namespace' => $this->namespace,
], function ($router) {
require base_path('routes/web.php');
});
}

protected function mapWebBootRoutes()
{
Route::group([
'prefix' => 'api',
'middleware' => ['web'],
'namespace' => $this->namespace,
], function ($router) {
require base_path('routes/boot.php');
});
}

/**
* 前端路由
*
*/

protected function mapApiRoutes()
{
Route::group([
'middleware' => ['web'],
'namespace' => $this->namespace,
], function ($router) {
require base_path('routes/api.php');
});
}

/**
* 框架路由
*
*/
protected function mapPlatformRoutes()
{
Route::group([
'prefix' => 'admin',
'middleware' => ['admin'],
'namespace' => $this->namespace,
], function ($router) {
require base_path('routes/admin.php');
});
}

/**
* 商城路由
*
*/
protected function mapShopRoutes()
{
Route::group([
'prefix' => 'admin',
'middleware' => ['admin'],
'namespace' => $this->namespace,
], function ($router) {
require base_path('routes/shop.php');
});
}

}

查看商城首页链接:   http://yunzhong.gysr.top/addons/yun_shop/?menu=#/home?i=2  前端商城用的vue框架

路由分发

这一节我们主要讲解 HTTP 如何被分发到相关路由并执行路由设置的回调(或控制器)。

如果你有了解过 Laravel 生命周期的话,应该知道所有的 HTTP 请求都是由 Illuminate\Foundation\Http\kernel::class内核处理的,而捕获 HTTP 请求操作位于项目的入口文件 public/index.php 中。

前端页面api 地址:  http://yunzhong.gysr.top/addons/yun_shop/api.php?i=2&uuid=0&type=1&shop_id=null&route=home-page.index&

7月3日下午 微擎芸众商城 设计思路 - laravel路由底层源码解读的更多相关文章

  1. 【一起学源码-微服务】Nexflix Eureka 源码十三:Eureka源码解读完结撒花篇~!

    前言 想说的话 [一起学源码-微服务-Netflix Eureka]专栏到这里就已经全部结束了. 实话实说,从最开始Eureka Server和Eureka Client初始化的流程还是一脸闷逼,到现 ...

  2. 微服务8:通信之RPC实践篇(附源码)

    ★微服务系列 微服务1:微服务及其演进史 微服务2:微服务全景架构 微服务3:微服务拆分策略 微服务4:服务注册与发现 微服务5:服务注册与发现(实践篇) 微服务6:通信之网关 微服务7:通信之RPC ...

  3. 12月15日下午Smarty模板函数

    1.{$var=...} 这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值. <{$a = 10}><!--赋值语句--> <{$a}> ...

  4. Bootrap 项目实战(微金所前端首页)第二部分(首页源码)

    首页源码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  5. 【一起学源码-微服务】Ribbon源码五:Ribbon源码解读汇总篇~

    前言 想说的话 [一起学源码-微服务-Ribbon]专栏到这里就已经全部结束了,共更新四篇文章. Ribbon比较小巧,这里是直接 读的spring cloud 内嵌封装的版本,里面的各种config ...

  6. 11月15日下午 ajax返回数据类型为XML数据的处理

    ajax返回数据类型为XML数据的处理 /*XML:可扩展标记语言 HTML:超文本标记语言 标签:<标签名></标签名> 特点: 1.必须要有一个根 2.标签名自定义 3.对 ...

  7. 11月10日下午 ajax做显示信息以后用ajax、Bootstrp做弹窗显示信息详情

    1.用ajax做弹窗显示信息详情 nation.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...

  8. 11月8日下午Jquery取属性值(复选框、下拉列表、单选按钮)、做全选按钮、JSON存储、去空格

    1.jquery取复选框的值 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...

  9. 11月7日下午PHP----PDO访问方式操作数据库

    MySQLI是专门访问MySQL数据库的,不能访问其它数据库.PDO可以访问多种的数据库,它把操作类合并在一起,做成一个数据访问抽象层,这个抽象层就是PDO,根据类操作对应的数据库.mysqli是一个 ...

随机推荐

  1. MySQL高级查询与编程笔记 • 【第4章 MySQL编程】

    全部章节   >>>> 本章目录 4.1 用户自定义变量 4.1.1 用户会话变量 4.1.2 用户会话变量赋值 4.1.3 重置命令结束标记 4.1.4 实践练习 4.2 存 ...

  2. openmesh - src - trimesh delete and add elements

    openmesh - src - trimesh delete and add elements openmesh 版本 8.1 About 本文主要介绍openmesh的如下接口 add_verte ...

  3. 灵雀云Kube-OVN:基于OVN的开源Kubernetes网络实践

    近日,灵雀云发布了基于OVN的Kubernetes网络组件Kube-OVN,并正式将其在Github上开源.Kube-OVN提供了大量目前Kubernetes不具备的网络功能,并在原有基础上进行增强. ...

  4. 使用.NET 6开发TodoList应用(28)——实现应用程序健康检查

    系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 应用健康检查在容器部署的微服务场景下非常常见,相比而言单体非容器部署的应用就不太关心这个特性,为了后续的内容我们在本文中简单介 ...

  5. Hello world.java

    Hello world 1.随便新建一个文件夹,存放源代码 2.新建一个Java文件 文件后缀名为.java Hello.java [注意点]系统可能显示没有后缀名,我们需要手动打开 3.编写代码 p ...

  6. CTF-sql-宽字节注入

    本文章主要涉及sql宽字节注入注入的原理讲解,如有错误,望指出.(附有目录,如需查看请点右下角) 一.首先介绍一下本篇文章所用到的知识点: 常用到的url编码: 空格:%20 单引号:%27 在sql ...

  7. dubbo接口方法重载且入参未显式指定序列化id导致ClassCastException分析

    问题描述&模拟 线上登录接口,通过监控查看,有类型转换异常,具体报错如下图 此报错信息是dubbo consumer端显示,且登录大部分是正常,有少量部分会报类型转换异常,同事通过更换方法名+ ...

  8. C# app.config 保存和读取例子

    保存: Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath); if ...

  9. [STM32F10x] 利用定时器测量脉冲宽度

    硬件:STM32F103C8T6 平台: ARM-MDk V5.11 前面一篇文章讲过如何利用定时器测量信号的频率(见[STM32F10x] 利用定时器测量频率),使用的是定时器的捕获/比较单元(Ca ...

  10. 【解决了一个小问题】golang的go.mod中出现版本错误

    代码中的这一句使用prometheus2.28.0版本的代码: import "github.com/prometheus/prometheus/prompb" 我把require ...