学习参考文章 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. JavaScript交互式网页设计 • 【第2章 JavaScript函数与事件】

    全部章节   >>>> 本章目录 2.1 JavaScript 自定义函数 2.1.1 函数的定义 2.1.2 函数的调用 2.1.3 函数的参数 2.1.4 函数的返回值 2 ...

  2. SpringBoot集成Actuator端点配置

    1.说明 Actuator端点可以监控应用程序并与之交互. Spring Boot包括许多内置的端点, 比如health端点提供基本的应用程序运行状况信息, 并允许添加自定义端点. 可以控制每个单独的 ...

  3. 微信公众号开发--.net core接入

    .net进行微信公众号开发的例子好像比较少,这里做个笔记 首先,我们需要让微信能访问到我们的项目,所以要么需要有一个可以部署项目的连接到公网下的服务器,要么可以通过端口转发将请求转发到我们的项目,总之 ...

  4. CSS基础 实战案例 模拟小米官方导航栏

    效果图 html结构 <ul> <li><a href="#">Xiaomi手机</a></li> <li> ...

  5. Unity3D开发入门教程(二)—— Lua入门

    五邑隐侠,本名关健昌,12年游戏生涯. 本教程以 Unity 3D + VS Code + C# + tolua 为例. 如果你还没有编程基础,建议你先学习一些编程基础.本文不是完全菜鸟教程,主要针对 ...

  6. spring-Ioc(二)学习笔记

    属性注入方式 设值注入:也就是set注入,通过setter方法注入 java Bean private ITestDao dao; public void setDao(ITestDao dao){ ...

  7. NIO【同步非阻塞io模型】关于 NIO socket 的详细总结【Java客户端+Java服务端 + 业务层】【可以客户端间发消息】

    1.前言 以前使用 websocket来实现双向通信,如今深入了解了 NIO 同步非阻塞io模型 , 优势是 处理效率很高,吞吐量巨大,能很快处理大文件,不仅可以 做 文件io操作, 还可以做sock ...

  8. nginx配置指定域名访问,nginx禁止ip访问,配置空主机头 syscal

    1.大家有过这方面的困扰,就是自己的网站给其他人恶意域名解析到自己的服务器ip上. 特别不爽,那大家可以用用空主机头的方法. 先给大家看下我的nginx.conf配置 http { log_forma ...

  9. HDU 2041 超级楼梯 (斐波那契数列 & 简单DP)

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2041 题目分析:题目是真的水,不难发现规律涉及斐波那契数列,就直接上代码吧. 代码如下: #inclu ...

  10. CTF-sql-宽字节注入

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