ThinkPHP 多应用模式之Api路由分组+中间件

ThinkPHP 6.1 在多应用模式下实现API路由分组+中间件验证业务

目录

1.创建中间件文件

2.迁移中间件到子应用目录中

3.编辑中间件验证业务

修改命名空间

编写handle处理代码

4.注册中间件

编辑中间件文件

TP内置中间件

5.设置路由分组

优化相同控制器前缀

最终效果:


 

1.创建中间件文件

首先我们不知道文件里面都有哪些方法和设置,并且也没有直接创建到多应用的命令,只能先执行全局的中间件创建命令

$ php think make:middleware ApiCheck
Middleware:app\middleware\Check created successfully.

可见app目录下新增了一个middleware文件夹,里面有ApiCheck.php文件

2.迁移中间件到子应用目录中

即把middleware移动到index目录中,文件层级如下:

 

3.编辑中间件验证业务

修改命名空间

namespace app\middleware;

改为

namespace app\index\middleware;

编写handle处理代码

public function handle($request, \Closure $next)
{
    // 测试使用 若触发此规则 则跳转回首页 否则进入下一个流程
    if ($request->param('name') == 'think6') {
        return redirect('/');
    }
    return $next($request);
}

4.注册中间件

编辑中间件文件

打开app/index/config/middleware.php文件

<?php
// 中间件配置
return [
    // 别名或分组
    'alias'    => [
        'apiCheck' => [
            think\middleware\SessionInit::class,// session初始化
            app\index\middleware\ApiCheck::class // api请求验证
        ]
    ],
    // 优先级设置,此数组中的中间件会按照数组中的顺序优先执行
    'priority' => [],
];

优先级可不设置,默认按照分组顺序执行

TP内置中间件

中间件类

描述

think\middleware\AllowCrossDomain

跨域请求支持

think\middleware\CheckRequestCache

请求缓存

think\middleware\LoadLangPack

多语言加载

think\middleware\SessionInit

Session初始化

think\middleware\FormTokenCheck

表单令牌

默认都没有定义,使用可以在应用的middleware.php文件中、路由或者控制器中定义这些中间件。

5.设置路由分组

设置一个分组来处理Api验证,apiCheck是之前设置的别名

Route::get('/', 'User/index')->name('user.index');

Route::group('api', function(){
   // 登录
   Route::get('login', 'User/login');
   // 注册
   Route::get('register', 'User/register');
})->middleware('apiCheck');

访问地址为:http://serverName/api/login

优化相同控制器前缀

因为登录和注册都有共同的控制器,所以可以优化为:

Route::group('api', function(){
  // 登录
  Route::get('login', 'login');
  // 注册
  Route::get('register', 'register');
})->prefix('User/')->middleware('apiCheck');

最终效果:

访问http://serverName/api/login

访问http://serverName/api/login?name=think6 

 

 访问http://serverName/api/register

访问http://serverName/api/register?name=think6

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
thinkphp6.0中,可以通过路由分组来实现多应用多模块的路由管理。 首先,在config目录下的route.php文件中,可以定义路由分组: ```php use think\facade\Route; Route::group('admin', function(){ // 管理员模块路由定义 Route::get('index', 'admin/Index/index'); Route::get('user', 'admin/User/index'); }); Route::group('home', function(){ // 前台模块路由定义 Route::get('index', 'home/Index/index'); Route::get('user', 'home/User/index'); }); ``` 上述代码中,我们分别定义了两个路由分组,一个是admin分组,一个是home分组。在每个分组中,可以定义对应模块的路由。 在访问路由时,可以使用分组名作为路由前缀: ``` http://localhost/admin/index // 访问管理员模块的首页 http://localhost/home/index // 访问前台模块的首页 ``` 除了在路由文件中定义分组外,还可以在模块的路由文件中定义分组。例如,在admin模块的route.php文件中,我们可以这样定义路由分组: ```php use think\facade\Route; Route::group('user', function(){ // 管理员模块的用户管理路由定义 Route::get('index', 'admin/User/index'); Route::get('add', 'admin/User/add'); Route::get('edit', 'admin/User/edit'); }); ``` 这样,在访问管理员模块的用户管理相关页面时,就可以使用/user作为路由前缀了: ``` http://localhost/admin/user/index // 访问管理员模块的用户列表页 http://localhost/admin/user/add // 访问管理员模块的添加用户页 http://localhost/admin/user/edit // 访问管理员模块的编辑用户页 ``` 通过路由分组的方式,可以方便地管理多应用多模块的路由,提高代码的可读性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值