多模块 - 路由配置

凌晨三点半的卢本伟

背景条件

菜鸟一枚,想学习一下新框架

项目需求

项目需要为mvc模式 ,生命周期为 客户请求 -》 路由 -》 中间件 -》 拦截器 -》 接收数据 -》 验证器 -》 业务逻辑 -》 最后 return ,现在就卡在了路由,还是太菜了,哈哈哈哈
目前 composer 接入 webmanadmin 后台 ,如果项目需要前后端分离 则后台出接口
app
    |-api        #客户端接口
    |-home    #pc展示或者 h5入口
    |-admin_api  #如果后端分离则出接口
    |-common    #公共
        |- model
        |- common.php     #公共方法
        |- api_route.php    #未实现当前路由
        |- admin_route.php  #未实现当前路由
        ..
config
...

解决方案如下

1.多模块模式目录如下

app
    |-api
        |-controller    #这是第一种路由模式
            |-IndexController.php
        |-middleware    #中间件
        |-validate      # composer think-validate 习惯用tp的验证类
        |-model         #模型
        |-v1 #这是第二种路由模式
            |-controller  #这是另一种
                |-Test.php
            |-middleware
            |-validate
            |-model
        |-v2 #更多
    |-admin_api
    |-common
    |-home
comfig
    |-route.php
    ...

如图
截图

路由配置 config/route.php

Route::group('/api', function () {
    Route::any('/index',[app\api\controller\IndexController::class, 'index']);
    # any 可以换成 resource 等
    # /index 你可以换成其他名字也行 如 get_list http://域名/api/get_list
    # app\api\controller\IndexController::class 对应的路径控制器
    # 如果你的控制器是Index.php 则变成 app\api\controller\Index::class
    # 'index' 控制器对应的方法
    Route::group('/v1', function () {
        #这个 v1下的控制器改名为 Test.php
        Route::any('/demo',[app\api\v1\controller\Test::class, 'test']);
        # '/demo' 可以随便起名字,但是重复会报错
        Route::any('/test/del/{id}',[app\api\v1\controller\Test::class, 'del']);
        # 这种更符合我的模块写法
    });
});

路由案例如下

Route::any('/index',[app\api\controller\IndexController::class,'index']);
截图

Route::any('/demo',[app\api\v1\controller\Test::class,'test']);
截图

Route::any('/test/del/{id}',[app\api\v1\controller\Test::class, 'del']);
截图

del/{id} 接收需要注意一点 ,如果没有写$id(接收参数) ,就会报错

截图

其他 :

一定要看文档,一定要看文档,一定要看文档。
为什么我的域名后面没有:8787
搜索 nginx 代理 自行更改

里面的插件是真的香,直接composer就能用
1044 0 0
0个评论

凌晨三点半的卢本伟

290
积分
0
获赞数
0
粉丝数
2022-11-15 加入
🔝