您当前的位置:首页 > 网站建设 > 帝国cms
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery | 小程序 |

利用帝国万能api接口插件开发核心说明

51自学网 2020-03-09 20:46:43
  帝国cms

原作者网站http://dgapi.cmsxy.com/
统一入口文件

利用帝国万能api接口插件开发的api/插件入口文件都是 /e/extend/api/index.php?[模块变量名]=[模块名]&[控制器变量名]=[控制器名]&[自定义变量]=[自定义变量]
例如:
http://yourdomain/e/extend/api/index.php?m=user&c=count
http://yourdomain/e/extend/api/index.php?m=user&c=info&id=1

某些平台回调地址中不允许出现问号怎么办?

使用伪静态功能,将地址简化即可。例如我们将上面的两个地址利用伪静态变成:
http://yourdomain/dgapi/user/count
http://yourdomain/dgapi/user/info?id=1

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
	
  RewriteRule ^dgapi/([a-z]+)/([a-z]+)(.*)$ e/extend/api/index.php?m=$1&c=$2$3 [QSA,PT,L]
  # 上一行的问号前面请添加一个反斜杠
</IfModule>



权限配置

这个配置文件会在安装的时候,将自动授权给一个管理组(当前操作的管理员所在的管理组),因此万一误操作将所有管理组权限都去掉而引起无法管理的情况出现,可以通过删除插件目录下的install.lock来解决。

基本设置

目前的基本设置比较简单,甚至在使用过程中都不需要搭理。但是它却是一个比较重要的功能,有了它我们可以解决一些重要的问题。
首先,我们来了解一下两个比较重要的名称:模块变量 与 控制器变量 默认它的值分别是 m 和 c

看下图你就能很快的了解它们会出现在哪里

假设我们的地址是 http://yourdomain/e/extend/api/index.php?m=user&c=count GET参数为m=user&c=count m 与 c 就是我们所设置的 模块变量 与 控制器变量

在一般情况下,我们是不需要理会这个设置。但是我们在开发接口的时候,可能会碰到一些需要回调地址的接口(比如支付宝充值)。而这个回调地址的参数是由第三方(支付宝)提供的,如果这个回调地址中的参数恰好有m或者c就会引起冲突。所以我们此处的设置应该尽可能的取一些不常用的值来防止这个问题。

 

什么是模块

简单的讲,一个模块就是多个功能的集合。
举个例子:假设需要做一个微信公众号的api接口,这个接口中有 自动回复、菜单编辑、关注有奖等功能。那么这些功能的集合就是一个模块或称作一个接口(其实称作模块更为合适)

模块结构

一个模块对应一个文件夹(位于 /e/extend/api/ 下),而每个模块包含一个配置文件 _conf.php 一个模块公共函数文件 _function.php 和多个控制器文件,模块名称只能由小写英文字母组成。

模块管理

  • 添加/编辑 管理模块信息及状态
  • 管理/删除 管理模块下的控制器,若是删除模块将会删除该模块下所有的控制器。
  • 开启/禁用 禁用模块下的所有控制器都无法仿问。

导入模块

因为一个模块对应一个文件夹,所以导入一个模块十分的简单。
1、将模块文件夹复制到插件/e/extend/api/目录下。
2、在后台添加一个模块,模块名称为模块的目录名称。

 

什么是控制器

我们将一个模块(API)看成一个家庭,那么控制器就是这个家庭中的人员。每个人都有各自的特色,可以完成不同的工作,既是一个独立的个体又依赖与服务于家庭。所以一个模块(API)具体可以做什么,其实是取决于控制器。

 

api.class.php 方法

public_r
 $api->public_r
 获取帝国公共配置,与全局变量$public_r相等
empire
 $api->empire
 帝国数据库实例,用法与全局的$empire相同
load
 $api->load($name)
 加载指定的扩展库
param
 $api->param( $name , [ $default = '' , $fn = 'trim' ] )
 $name参数名称 $default默认值 $fn过滤函数名
 获取指定KEY值的GETPOST变量值,且优先获取GET
get
 $api->get( $name , [ $default = '' , $fn = 'trim' ] )
 $name参数名称 $default默认值 $fn过滤函数名
 获取指定KEY值的GET变量值
post
 $api->post( $name , [ $default = '' , $fn = 'trim' ] )
 $name参数名称 $default默认值 $fn过滤函数名
 获取指定KEY值的POST变量值
input
 $api->input( $name = '' , [ $default = '' , $fn = 'trim' ] )
 $name参数名称 $default默认值 $fn过滤函数名
 获取指定KEY值的POST变量值,可以获取原始数据。$name参数留空获取所有数据
show
 $api->show( $str = '' , [ $type = 'text/html' , $charset = 'utf-8' ] )
 $str字符串 $type页面类型 $charset页面编码
 页面输出,完成后将执行exit
json
 $api->json( $arr , $options = 0)
 $arr数组/字符串 $options字符串处理类型
 将$arr转成json结构之后执行$api->show($json , 'text/json');
jsonp
 $api->jsonp( $arr , $cb = 'callback' , $options = 0)
 $arr数组/字符串 $cb回调函数名称 $options字符串处理类型
 输出jsonp格式数据
error
 $api->error( $str , [ $code = 404 , $type = 'text/html' , $charset = 'utf-8' ])
 $str字符串 $code页面状态码 $type页面类型 $charset页面编码
 页面输出,并指定状态码。默认输出404页面
execute
 $api->execute($sql = '' , $exit = true)
 $sqlsql语句 $exit出错是否中断程序执行
 执行SQL语句,成功返回true,失败返回false
query
 $api->query($sql = '')
 $sqlsql语句
 执行sql语句(主要用于查询操作,返回由多条数据组成的数组)
one
 $api->one($sql = '')
 $sqlsql语句
 执行sql语句(主要用于查询操作,仅返回由一条数据组成的数组)
total
 $api->total($table= '' , $where = '')
 $table表名 $where条件(若值为true,则$table代表sql语句)
 数据统计
insert
 $api->insert($table , $data = '')
 $table 表名,无需前缀 $data 要写入的数据数组
 数据写入
select
 $api->select($table , $field = '*' , $where = '1' , $limit = 20 , $page = 1 , $orderby = '')
 $table 表名,无需前缀 $field 字段 $where 查询条件 $limit 每页显示数据量 $page 获取第几页的数据 $orderby 排序方式
 查询指定数据表的数据
update
 $api->update($table , $data = '' , $where = '0')
 $table 表名,无需前缀 $data 更新的字段数据 $where 条件
 数据更新。例如:将会员test的用户名改成dgapi $api->update('enewsmember' , $data = 'username="dgapi"' , $where = 'username="test"')
delete
 $api->delete($table , $where = '0')
 $table 表名,无需前缀 $where 条件
 删除数据
controller
 $api->controller($name , $model)
 $name控制器名称 $model模块名称,可为空
 获取指定控制器的路径
import
 $api->import($name , $model='' , $assign = array())
 $name控制器名称 $model模块名称,可为空 , $assign导入控制器数据(数组方式)
 导入指定的控制器
cache
 $api->cache($name , $fn , $time=0 , $format=true)
 $name缓存名称 $fn闭包函数 $time缓存时间 $format是否用serialize处理数据
 读取或设置缓存闭包函数$fn返回的数据,返回$fn的返回值。所以$fn必须要有返回。
send_http_status
 $api->send_http_status($code)
 $code状态码
 指定页面的状态码


 

request.class.php

获取当前接口请求方式,以及获取相关数据 $request= $api->load('request');
判断类方法有 is_ajax()is_get() is_post() is_put() is_delete() is_head() is_trace()is_option()
获取类方法有 get() post() param() put() delete() input() 其中 getpost param 同 $apigetpostparam用法一致,inputputdelete方法参数与get方法完全一致
获取客户端IP方法ip()



 

gzh.class.php

微信公众号自动回复类(明文方式),公众号端的配置请直接查看微信公众号的说明

使用方法$gzh= $api->load('gzh' , array('token' => '微信公众号设置的token' , 'aeskey'=>'公众号处获取的密钥'));

check
 $gzh->check()
 验证方法,在初始化后直接使用即可。认证通过后可删除(但不建议)
getPost
 $gzh->getPost()
 获取公众号返回的数据,通过此方法可以轻易的知道用户在公众号里发送了什么数据给接口。
textpic
 $gzh->textpic($data , $wxdata)
 回复图文给用户。
$data是需要返回给用户的数据(数组),数组元素必须包含标题:title链接:url描述:description图片地址:picurl
$wxdata通过getPost()方法获取到的数据,可不填
text
 $gzh->text($content , $wxdata)
 回复普通文本给用户。
$content是需要返回给用户的文本信息,支持a标签
$wxdata通过getPost()方法获取到的数据,可不填

 

token.class.php

api调用权限验证。使用前必须先导入类文件。导入方法 $upapi = $api->load('token' , $config);
下面我们以$tokenapi为例说明。在线演示

token
 $tokenapi->token
 获取或设置token参数的变量名,默认为token
time
 $tokenapi->time
 获取或设置时间戳参数的变量名,默认为t
timeout
 $tokenapi->timeout
 获取或设置超时时间(单位秒),默认为300
key
 $tokenapi->key
 获取或设置加密key,默认为dgapi-token (强烈要求修改)
build
 $tokenapi->build($param)
 $param当前api所需GET参数数组
 生成token
check
 $tokenapi->check()
 验证token是否正确,返回数字(-1:超时 , 0:失败 , 1:成功)
query
 $tokenapi->query($param)
 $param当前api所需GET参数数组
 获取url参数

 

upload.class.php

文件上传操作。使用前必须先导入类文件。导入方法 $upapi = $api->load('upload' , $config);
上传文件之前请自行先验证权限,下面我们以$upapi为例说明。在线演示

$config = array(
	'maxsize' => 1024*1024, //上传文件最大值
	'exts' => 'gif,jpg,png' //允许上传的文件后缀
);
$upapi = $api->load('upload' , $config);
$upapi->rootpath = '/images/logo/'; //设置上传路径,也可以直接在config中设置
$file = $_FILES['image']; //获取表单字段的数据
$res = $upapi->upload($file , 'logo'); //上传文件,并文件名为logo
maxsize
 $upapi->maxsize
 获取或设置上传文件大小限制,0表示不限制。单位为字节
exts
 $upapi->exts
 获取或设置允许上传文件的后缀,默认为限制。例:$upapi->exts = array('gif' , 'jpg' , 'png');
mimes
 $upapi->mimes
 获取或设置允许上传文件mime类型
rootpath
 $upapi->rootpath
 获取或返回文件上传根目录(必须以帝国CMS程序根目录开始) , 默认为//dgapi.cmsxy.com/d/file/20170605 其中 20170605 是当天日期
upload
 $upapi->upload($file , [$savename , $savepath])
 $file如$_FILES['image'](image是表单file的name) , $savename保存文件名,不包含后缀 , $savepath文件保存路径,将覆盖$upapi->rootpath
 上传文件,成功返回文件相关数据。失败返回false
getError
 $upapi->getError()
 获取上传错误信息

 

user.class.php

会员操作。使用前必须先导入类文件。导入方法 $userapi = $api->load('user');
下面我们以$userapi为例说明。无刷新注册与登陆:在线演示

find
 $userapi->find($username , [$password='' , $all=false])
 $username会员用户名或会员ID , $password登陆密码,不为空需要则检测密码 , $all是否获取附表数据
 获取指定$username$userid的数据。成功返回数据,失败返回false
islogin
 $userapi->islogin([$all=true])
 $all是否返回附表数据
 判断是否已登陆,已登陆返回用户数据,未登陆返回false
login
 $userapi->login($user , [$time = 0])
 $user会员数据(数组,至少包含userid,groupid),$time 登陆状态保存时长
 将指定用户设置成登陆状态
register
 $userapi->register($data)
 $data待注册的会员信息,必须包含usernamepassword 且不能包含会员主表中不存在的字段
 会员注册。该操作会自动判断会员名是否已存在。注:此操作仅对会员主表写入,副表部分请在此操作成功后自行做更新处理。
logout
 $userapi->logout()
 退出登陆
has_username
 $userapi->has_username($username)
 $username用户名
 判断指定用户名是否已存在。
has_email
 $userapi->has_email($email)
 $email邮箱地址
 判断指定邮箱是否已存在。
verify_code
 $userapi->verify_code($name , [$code = false])
 $name验证码类型(login 或 reg) $code验证码字符串
 验证或设置验证码。$code不为false则为验证。
mark_password
 $userapi->mark_password($pw, $salt= '')
 $pw未加密前的密码 $salt加密混淆字符串
 将字符串转成密码,主要在注册、登陆、修改密码等有密码判断时用到。注(每个用户都有一个独立的salt)


下载地址:
$tokenapi为例说明。在线演示
帝国cms制作一个获取会员信息的AIP接口
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。