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

news2024/12/31 4:17:38

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

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/136992.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【信息论与编码 沈连丰】第六章:连续信息和连续信道

【信息论与编码 沈连丰】第六章&#xff1a;连续信息和连续信道第六章 连续信息和连续信道6.1 连续消息的信息6.2 连续消息在信道上的传输问题6.3 香农信道容量公式6.4 连续消息的识别和理想接收机6.5 连续信源的数字处理及其编码第六章 连续信息和连续信道 6.1 连续消息的信息…

在 KubeSphere 上部署 OpenLDAP 并进行对接使用

在 KubeSphere 上部署 OpenLDAP 并进行对接-进阶背景前置条件KubeSphere 中部署 LDAP部署 LDAP 应用ApacheDirectoryStudio 验证 LDAP下载部署 ApacheDirectoryStudioApacheDirectoryStudio 测试 LDAP创建 Ldap Search &#xff0c;KS 对接时可选择使用KubeSphere 对接 LDAPHar…

【区块链 | EVM】深入理解学习EVM - 深入Solidity数据存储位置:内存

图片来源: Mech Mind on Unsplash 这是深入Solidity数据存储位置系列的另一篇。在今天的文章中,我们将学习EVM内存的布局,它的保留空间,空闲内存指针,如何使用memory引用来读写内存,以及使用内存时的常规最佳做法。 我们将使用 Ethereum Name Service (ENS)中的合约代码…

实模式和保护模式的区别

实模式和保护模式的区别 实模式和保护模式的来历 最早期的8086 CPU只有一种工作方式 ---- 实模式。数据总线为16位&#xff0c;地址总线为20位。实模式下所有寄存器都是16位。 从80286开始就有了保护模式&#xff0c;从80386开始CPU数据总线和地址总线均为32位&#xff0c;而且…

开发板测试手册——SPI FLASH 读写、USB WIFI 模块(2)

目录 1.8 SPI FLASH 读写测试 20 1.9 USB 接口读写测试 21 1.10 网络接口测试 23 1.10.1 网络连通测试 23 1.10.2 网络速度测试 25 2 网络静态 IP 设置 27 3 USB WIFI 模块测试 31 3.1 WIFI STA 功能测试 32 3.2 WIFI AP 功能测试 35 3.3 USB WIFI 驱动编译 39 前 言…

scikit-learn线性模型之线性回归

scikit-learn线性模型之线性回归线性回归参考文献线性回归 有监督学习中主要解决两个问题&#xff0c;一个是分类&#xff0c;另一个是回归。 在回归问题中&#xff0c;我们需要利用我们已知的特征 x1,x2,...,xpx_1,x_2,...,x_px1​,x2​,...,xp​ 去预测我们的目标变量 yyy 。…

隐私计算一体机,金融大数据规模商用的催化剂

一股隐私计算的浪潮正席卷金融行业。 银行通过隐私计算引入外部不动产数据&#xff0c;与行内贷款企业的时点贷款余额、注册资本等数据联合建立企业贷中预警监测模型&#xff0c;提升银行风险监测业务能力&#xff1b;银行利用联邦学习与互联网公司的客户特征数据完成联合建模…

Linux:使用telnet命令提示:Connection refused

我是 ABin-阿斌&#xff1a;写一生代码&#xff0c;创一世佳话&#xff0c;筑一览芳华。如果小伙伴们觉得不错就一键三连吧~ 下一篇&#xff1a;Linux安装telnet命令教程 文章目录一、分析没有xinetd服务&#xff1a;二、讲解&#xff1a; 什么是 telnet 命令具体语法具体参数三…

Node.js--》如何在Node.js中操作MySQL

目录 数据库 MySQL的安装与配置 SQL管理数据库 WHERE子句 AND和OR ORDER BY子句 COUNT(*)函数 在Express项目中操作MySQL 数据库 数据库(database)是用来组织、存储和管理数据的仓库。当今世界是一个充满着数据的互联网世界&#xff0c;充斥着大量的数据。数据的来源有…

算法拾遗二十三之暴力递归到动态规划一

算法拾遗二十三之暴力递归到动态规划一题目一优化Code&#xff08;空间换时间&#xff09;优化二题目二优化一&#xff08;缓存法&#xff09;优化三&#xff08;严格表优化&#xff09;题目一 假设有排成一行的N个位置&#xff0c;记为1~N&#xff0c;N 一定大于或等于 2 开始…

Softing与Portainer合作,为工业物联网提供灵活高效的机器连接管理解决方案

Softing工业自动化成为了Portainer的增值经销商。Portainer.io是一个用于管理容器软件应用的平台&#xff0c;而Softing连接产品与其相结合可以使用户更轻松地管理工业物联网解决方案。 &#xff08;左边&#xff1a;Thomas Hilz&#xff0c;Softing工业自动化常务董事&#xf…

创建odoo15项目

Odoo 提供了一种机制来帮助建立一个新模块 python 启动项目名称 scaffold 模块名称 模块创建的文件夹如下两种方式&#xff1a; 1&#xff09;可新建manage.py文件来启动脚手架 import os import sysLIB_PATH os.path.join(os.path.split(os.path.realpath(__file__))[0], .…

【谷粒商城基础篇】基础篇总结

谷粒商城笔记合集 分布式基础篇分布式高级篇高可用集群篇简介&环境搭建项目简介与分布式概念&#xff08;第一、二章&#xff09;基础环境搭建&#xff08;第三章&#xff09;整合SpringCloud整合SpringCloud、SpringCloud alibaba&#xff08;第四、五章&#xff09;前端知…

【kafka-ui】支持kafka with raft的可视化集群管理工具

前言 在早期使用kafka的时候一般使用Kafka Tool或者kafka eagle&#xff0c;前者为桌面软件&#xff0c;后者为浏览器软件。总体来说体验一般&#xff0c;但是还比较够用。 但是从kafka3.3.1开始&#xff0c;已经正式抛弃zookeeper使用自己的仲裁器了&#xff0c;但是上述两种…

什么是网站备案?如何查询网站是否备案?

网站备案是指根据国家法律法规需要网站的开办者向国家有关部门申请的备案.具体分为ICP备案和公安备案。 ICP备案 《互联网信息服务管理办法》指出&#xff0c;互联网信息服务分为经营性和非经营性两类。 国家对经营性互联网信息服务实行许可制度&#xff1b;对非经营…

实验室小分子PEG衍生物之Azido-PEG11-Azide/amine/NHS/COOH 叠氮-十一聚乙二醇-叠氮 1392284-57-9

Azido-PEG11-Azide叠氮-十一聚乙二醇-叠氮 中文名称&#xff1a;叠氮-聚乙二醇(十一甘醇)-叠氮&#xff1b;叠氮-十一聚乙二醇-叠氮 英文名称&#xff1a;Azido-PEG11-Azide 分子式&#xff1a;C24H48N6O11 分子量&#xff1a;596.67 CAS&#xff1a;1392284-57-9 外观&#x…

elasticsearch基础(一)

一、初识elasticsearch 1. 了解ES 1.1 什么是elasticsearch elasticsearch是一款非常强大的开源搜索引擎&#xff0c;可以帮助我们从海量数据中快速找到需要的内容。 elasticsearch结合kibana、Logstash、Beats&#xff0c;也就是elastic stack&#xff08;ELK&#xff09;。…

apply,call,bind的作用与区别

1.作用 都可以用来改变this,并立即执行函数 首先来看一个构造函数 function User(name) {this.name name;}let lisi new User(李四)console.log(lisi)// {"name": "李四"}使用call和apply改变this 第一个参数传递改变this指针的这个对象 function Us…

云存储生态构建的技术基因和最佳实践

当云计算、大数据、物联网、人工智能等新技术纷至沓来&#xff0c;我们都在时代的洪流中亲历这样的变化——数字科技深入渗透工作生活&#xff0c;从消费娱乐到生活服务&#xff0c;再到产业革新。 智能化时代&#xff0c;企业 IT 趋势的四大转变 不难发现&#xff0c;以上云…

涉及top名校对IB课程的分数要求

在北美、欧洲&#xff0c;有许多著名的大学乐于接收IB学生&#xff0c;有一些大学还为优秀IB毕业生提供奖励学分、越级的鼓励入学政策。全球有分布在近百个国家的一千余所大学与国际文凭组织(IBO)有稳定的协约关系&#xff0c;确保这些大学承认IB文凭。 什么是IB课程?IB课程项…