Discuz移动接口原理简介

2023-11-18

Discuz论坛内置提供针对移动端开发的json接口,下面根据源码进行一些分析。

入口 api/mobile/index.php

功能比较简单,指向source/plugins/mobile/mobile.php 或者check.php,check.php只有当类似$_GET['check'] == 'check'的情况下才运行,返回系统基本信息;其他请求均通过mobile.php接管。

mobile.php

mobile.php的基本思想是根据$_GET['module']以及$_GET['version']来调用相关的module文件,$_GET['version']参数可以做到版本兼容。

mobile/api/%version%/%module%.php

实现相当简单,根据需求设置$_GET['mod']等参数,然后将请求转到Discuz网页版页面,完成请求。同时,文件中定义mobile_api类。

mobile_api类

mobile_api类包含两个方法:common与output,common方法对应discuz的runhooks调用;output方法对应discuz的hookscriptoutput调用。

流程

Discuz调用runhooks时,调用mobile_plugin->common(),调用mobile_api->common()

Discuz在模板中调用hookscriptoutput()时,调用mobile_plugin->global_mobile(),调用mobile_api->output()

总结

Discuz大量使用$_G全局变量来保存系统运行过程中的结果,这为移动端内容输出提供便利,只需要在模板输出前截获$_G变量,然后根据需求从$_G变量中提取所需数据,并使用json格式返回。这就是Discuz移动端接口的基本实现方式。


转载于:https://my.oschina.net/u/1792865/blog/356406

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Discuz移动接口原理简介 的相关文章

随机推荐

  • 安装或更新 Android Studio

    在开始用 Jetpack Compose 来编写软件之前 我们需要 1 一台可以联网的电脑 2 安装或更新到 最新版的 Android Studio 3 选择创建 Empty Compose Activity 4 保持版本更新 尝试使用最新
  • Retrofit动态代理+注解+反射简析

    1 定义注解 Get注解 用来定义网络请求类型 Target ElementType METHOD Retention RetentionPolicy RUNTIME public interface Get String value Qu
  • sort()函数的用法说明

    sort 排序是一种简单的快速排序 用于对数组的排序 时间复杂度为n log2 n sort 函数必须是在 cpp 的文件中才能运行 头文件为 include
  • jmeter——BeanShell 预处理程序

    jmeter BeanShell 预处理程序 一 BeanShell 预处理程序描述和作用 二 BeanShell 预处理程序的使用 三 BeanShell 预处理程序的注意事项 四 BeanShell 预处理程序的拓展 一 BeanShe
  • 什么是ADT

    Abstract Data Type 抽象数据类型 是指数据结构作为一个软件组件的实现 ADT的接口用一种类型和该类型上的一组操作来定义 每个操作由它的输入和输出定义 ADT并不会指定数据类型如何实现 这些实现细节对于ADT的用户来说是隐藏
  • php 验证密码大、小写英文字母、数字、特殊字符4选3;且长度大于等于8位

    param password string 明文密码 return array 检测密码合法性 大 小写英文字母 数字 特殊字符 4选3 且长度大于等于8位 function check password legal KaTeX parse
  • pandas把索引变成列

    pandas把索引变成列 只需要使用reset index 这样index就会变成一列变量出现在元数据表中 比如原来的数据表是上面这样 使用reset index 就变成这样 具体reset index 还有一些更细的应用 后续随着学习再继
  • 判断电脑是否插入移动磁盘U盘等并显示结果

    VC 检测判断电脑是否插入移动磁盘U盘等并显示结果 判断手机 U盘 存储卡等设备是否插入到电脑接口中 若检测到某设备 则将设备盘符显示于窗口中 项目源代码 部分代码 程序运行截图
  • 数据库运维之数据库备份的多种方法

    数据库备份 数据库为school 素材如下 1 创建student和score表 CREATE TABLE student id INT 10 NOT NULL UNIQUE PRIMARY KEY name VARCHAR 20 NOT
  • 静态路由及默认路由——基本配置

    拓扑图 原理简述 1 静态路由 是指用户或网络管理员手工配置的路由信息 当网络拓扑结构或链路状态发生改变时 需要网络管理员手工配置静态路由信息 相比较动态路由协议 静态路由无需频繁的交换各自的路由表 配置简单 比较适合小型 简单的网络环境
  • el-switch在按钮内加文字内嵌文字

    产品需求 在按钮内内嵌对应操作文字 原生展示效果 升级展示效果 解决方案 按钮
  • %d, %ld, %lld 区别, %s,%c区别

    相信下面几个表达方式 就能说明问题吧 d int ld long lld long long 在32位编译器上 int long 32bit long long 64bit c是单个字符 也就是用 的 s是字符串 用 的
  • 深入理解SSL VPN

    名词解析 SSL Secure Socket Layer 安全套接字层 TLS Transport Layer Security 传输层安全协议 TLS 1 0是IETF Internet Engineering Task Force In
  • docker-6-docker架构和MySQL容器化的优劣

    1 docker架构 1 开发环境 gt 测试环境 gt 生产环境 2 环境和代码一起放在容器中 解决软件跨环境迁移问题 3 Docker是一个开源的应用容器引擎 4 Docker于2013年基于Go语言实现 5 Docker从17 03版
  • vbox 安装linux64,CentOS 5.8 x64安装VirtualBox-5.0虚拟机

    CentOS 5 8 x64安装VirtualBox 5 0虚拟机 根据自己的环境下载相应的安装包 1 下载并安装for el5 virtualbox虚拟机安装包 安装过程如下 缺依赖包 root lvmtest rpm ivh Virtu
  • html中报错:xxx is not a function

    我今天遇到了一个奇怪的问题 在javascript中写好了一个function 而且之前是可以调用的 例如 在onclick事件中调用 可是新增了一部分代码 也用了onclick调用 但是报错了 不能执行 一直说是xxx is not a
  • JAVA动态生成excel模板;列自定义下拉框赋值

    哈喽 2023大家开工大吉啊 财源滚滚 业务需求 需要生成excel模板 且对部分列设置下拉框 进行动态赋值 效果如下 拿上图举例 针对省这一列 不是填写 而是选择数据 也就是说我们生成excel文件的时候需要把数据填充到下拉框的列中 大体
  • 基本模块的总结

    基本模块的总结 请求模块 urllib库 内置库 urllib request request urlopen 网址或者请求对象 向网址发起请求 request Requqest url 网址 headers 请求头 data 请求参数 创
  • 利用java完成图像文字识别和翻译,实现拍照翻译的功能

    需求 利用java完成图像文字识别和翻译 实现拍照翻译的功能 可拆分为以下两个小的功能逐一完成 1 实现图像文字识别 2 将识别出来的文字进行翻译 1 实现图像文字识别 利用Tess4J进行图像文字识别 1 1 为方便集成tess4j的ja
  • Discuz移动接口原理简介

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Discuz论坛内置提供针对移动端开发的json接口 下面根据源码进行一些分析 入口 api mobile index php 功能比较简单 指向source plugin