开源协议:Apache License 2.0
源码地址:https://github.com/movie0312/M-API.git
M-API
概述... 1
一、 接口文档结构... 3
二、 接口环境设置... 3
1. 开发环境... 3
2. 生产环境... 3
三、 基本配置说明... 4
四、 mysql配置说明... 5
五、 对外接口入口配置说明... 7
六、 接口参数说明... 7
七、 code代码说明... 12
概述
为了方便前端以及移动端接口的开发,将相应功能整合为一个可快速设置应用的Web API,从而加快项目开发的周期。M-API通过简单设置可将数据库选择性的暴露给调用方。当然,为了安全考虑,建议设置相应的操作权限。该文档适合有一定基础的PHPer。
M-API开发环境为:php-7.0.4, mysql-5.7.11。同时支持php5.6.0,其它版本未进行测试。
M-API运行环境需要开启mbstring;加密操作需要开启openssl;数据库操作需要开启pdo_mysql。
M-API支持密送和签名。目前只支持RSA加密。鉴于RSA的特性,当交互信息量较大时建议修改为仅加密处理敏感信息,其它信息采用对称加密;或将传输协议改为HTTPS。如果必须使用RSA,可将信息进行分段处理。
M-API支持get和post。
M-API数据库目前仅支持mysql。
M-API全部采用PDO 预处理操作数据库。
M-API支持mysql字段有:char, varchar, tinyint, smallint, mediumint, int, bigint, decimal, text。
M-API支持同时多个数据库连接。同样,也支持同时多组基本设置调用。
M-API支持表级别和列级别的操作权限设置。
M-API可指定关联字段,以避免注入。
M-API支持自动数据有效性的验证。可手动指定正则验证。
M-API接收和传出数据均为json。
M-API不支持事务。请在业务逻辑中进行处理。
M-API不支持联结查询。请使用视图查询。
最终解释权归开发者所有。
未尽事宜,后续补充。
能力一般,水平有限。请多多包涵。
/class/basic.class.php————————基础类 基本配置信息
/class/mysql.class.php————————数据库类 mysql
/class/mysql.config.class.php——————mysql配置类
/class/rsa.class.php——————————加密类 rsa
/class/standard.class.php———————标准类常用函数
/pem/————————————————密钥
/index.php——————————————对外接口入口
/showstruct.php——————————— 快速显示数据库结构
需要配置以下文件
/class/basic.class.php
/class/mysql.config.class.php
/index.php
2. 生产环境
需删除以下文件
/readme.docx
/showstruct.php
public static $_config =array(
'default'=> array(
'参数' => ‘值’
),
'自定义配置名'=> array(
'参数' => '值'
)
);
基本配置 |
||
参数 |
说明 |
值 |
display_errors |
启用调试 |
true / false |
rsa |
启用rsa加密 |
true / false |
cipher |
启用密送 |
true / false |
private_key_path |
私钥文件的路径 |
'string' (该选项当ras为true时有效。当cipher为false时路径后自动增加子文件夹需传入文件夹名称) |
public_key_path |
公钥文件的路径 |
'string' (该选项当ras为true时有效。当cipher为false时路径后自动增加子文件夹需传入文件夹名称) |
private_key_name |
私钥文件名 |
'string' (该选项当ras为true时有效) |
public_key_name |
公钥文件名 |
'string' (该选项当ras为true时有效) |
get |
启用get |
true / false(一般为false;当rsa为true时需为false) |
参数 |
说明 |
值 |
db_type |
数据库类型 |
mysql |
db_host |
服务器地址 |
'string' |
db_port |
端口 |
'int' |
db_name |
数据库名 |
'string' |
db_user |
用户名 |
'string' |
db_pwd |
密码 |
'string' |
配置说明
可通过/showstruct.php快速生成。但生成后仍建议设置相应权限。
public static $_tables =array(
'0'=> array(
'0' => '表名1',
'参数' =>'值'
),
'1'=> array(
'0' => '表名2',
'参数' =>'值'
)
);
public static $_fields =array(
'0'=> array(
'0' => '字段名1',
'1' => '字段类型1',
'参数' =>'值'
),
'1'=> array(
'0' => '字段名2',
'1' => '字段类型2',
'参数' =>'值'
)
);
表权限配置 |
||
参数 |
说明 |
值 |
add |
允许增加 |
true / false 默认为true |
del |
允许删除 |
true / false 默认为true |
edit |
允许修改 |
true / false 默认为true |
select |
允许查询 |
true / false 默认为true |
字段权限配置 |
||
isuid |
身份标识 |
当为身份标识时接口内部使用;每个表仅有一个字段需要设置该属性;禁止任何外部调用; edit和select设置失效。默认为false |
edit |
允许修改 |
true / false 默认为true |
select |
允许查询 |
true / false 默认为true |
pattern |
正则过滤 |
'string' 正则表达式 默认为空 |
根据$data['b']['i']做用户操作权限判断。
根据$data['b']['d']做用户操作时限判断。
根据$data['b']['t']做用户身份判断并赋值$_uid。
传入参数 |
||
参数 |
说明 |
值 |
data |
传入值 |
'string' (加密/非加密) json |
传出参数 |
||
参数 |
说明 |
值 |
state |
执行状态 |
0未执行 / 1已执行 |
code |
返回代码 |
参阅“code代码说明” |
info |
返回信息 |
'string' (加密/非加密) json |
data名称 / 值列表 (以javascript为例) |
||
名称 |
说明 |
值 |
data[b] |
基本内容 |
'array' (参下) |
data[b][i] |
身份标识 |
'string' 必需 例: var temp = 'id'; |
data[b][d] |
时间戳 |
'int' 必需 例: var temp = 1461143961; |
名称 |
说明 |
值 |
data[b][t] |
令牌 |
'string' (身份id + MD5(登陆密码 ) + 时间戳) 可选 (没有该键的情况下默认为seeion验证) 例: var temp = 'id49ba59abbe56e0571461143961'; |
data[c] |
执行内容 |
'array' (参下) |
data[c][][a] |
操作类型 |
'int' (0增加, 1删除, 2修改, 3查询) 必需 0返回增加id;1, 2返回影响行数;3返回具体array。 例: var temp = 0; |
data[c][][t] |
操作的表 |
'int' (后台生成且允许相应操作) 必需 例: var temp = 1; |
data[c][][V] |
字段值 |
'array' 操作类型为0, 2时必需 格式:'字段代号' : '字段值' 字段代号由后台生成且允许相应操作 例: var temp = { '1' : 'abc', '2' : true, '3' : 1, }; |
data[c][][w] |
条件 |
'array' 操作类型为1, 2, 3时可选 格式:
'logic' : '具体关系' 字段与字段的条件关系 or / and 默认为and
i. 'logic' : '具体关系' 字段内的条件关系 or / and 默认为and ii. '字段代号' : { '条件类型' : '条件值' *条件值有可能是'array' } 字段代号由后台生成且允许相应操作
等于:'eq' : '具体值' 不等于:'neq' : '具体值' 大于:'gt' : '具体值' 大于等于:'egt' : '具体值' 小于:'lt' : '具体值' 小于等于:'elt' : '具体值' 模糊查询: 'like' : '具体值' 'like' : 'arrayA' arrayA: '0' : 'arrayB', '1' : '条件关系(or / and)' arrayB: '索引' : '具体值' 模糊查询(反):'notlike' : '具体值' 区间查询: 'between' : 'array' array: '0' : '起始值', '1' : '结束值' 区间查询(反):'notbetween' : 'array' (同上) IN查询: 'in' : 'array' array: '索引' : '具体值' IN查询(反):'notin' : 'array' (同上) 例: var temp = { 'logic' : 'or', '1' : { 'logic' : 'and', 'eq' : '1', 'like' : { '0' : { '0' : '测%', '1' : '试%' }, '1' : 'or' } }, '2' : { 'eq' : '2' } }; |
data[c][][s] |
显示字段 |
'string' 操作类型为3时必需 格式:'字段代号1, 字段代号2, 字段代号3,……' 字段代号由后台生成且允许相应操作 例: var temp = ['1', '2', '3', '5']; |
data[c][][o] |
排序 |
'array' 操作类型为3时可选 格式:'字段代号' : '排序方式' 排序方式:'' / desc默认为空(升序) 字段代号由后台生成且允许相应操作 例: var temp = { '1' : '', '2' : 'desc' }; |
data[c][][l] |
起始和数量 |
'string' 操作类型为3时可选 格式:'起始, 数量' 例: var temp = ['1', '5']; |
代码说明
代码 |
说明 |
0000 |
正常 |
A001 |
php需要mbstring扩展支持 |
A002 |
拒绝访问错误身份 |
C000 |
配置文件调试模式错误 |
C001 |
配置文件获取数据模式错误 |
C002 |
配置文件私钥文件的路径错误 |
C003 |
配置文件公钥文件的路径错误 |
C004 |
配置文件私钥文件名错误 |
C005 |
配置文件公钥文件名错误 |
C006 |
配置文件密送方式错误 |
C007 |
配置文件加密开关错误 |
代码 |
说明 |
C008 |
配置文件数据库参数错误 |
C009 |
配置文件数据库类型错误 |
C010 |
mysql基本设置表允许增加开关设置错误 |
C011 |
mysql基本设置表允许删除开关设置错误 |
C012 |
mysql基本设置表允许修改开关设置错误 |
C013 |
mysql基本设置表允许查询开关设置错误 |
C014 |
mysql基本设置字段允许修改开关设置错误 |
C015 |
mysql基本设置字段允许查询开关设置错误 |
C016 |
mysql基本设置字段身份标识开关设置错误 |
D001 |
php需要pdo_mysql扩展支持 |
D002 |
数据库连接错误 |
D003 |
sql执行错误 |
E001 |
php需要openssl扩展支持 |
E002 |
私钥文件不存在 |
E003 |
私钥不可用 |
E004 |
公钥文件不存在 |
E005 |
公钥不可用 |
E006 |
加密出错 |
E007 |
解密出错 |
E008 |
私钥路径错误 |
E009 |
公钥路径错误 |
代码 |
说明 |
G001 |
缺少传入参数data[b] |
G002 |
缺少传入参数data[b][i] |
G003 |
传入值错误data[b][i] |
G004 |
缺少传入参数data[b][d] |
G005 |
传入值错误data[b][d] |
G006 |
缺少传入参数data[c] |
G007 |
缺少传入参数data[c][][a] |
G008 |
传入值错误data[c][][a] |
G009 |
缺少传入参数data[c][][t] |
G010 |
传入值错误data[c][][t] |
G011 |
传入参数不允许增加操作data[c][][t] |
G012 |
传入参数不允许删除操作data[c][][t] |
G013 |
传入参数不允许修改操作data[c][][t] |
G014 |
传入参数不允许查询操作data[c][][t] |
G015 |
缺少传入参数data[c][][v] |
G016 |
传入参数不允许更改操作data[c][][v][] |
G017 |
传入参数错误data[c][][v][] |
G018 |
传入值不允许为空data[c][][v][] |
G019 |
传入值类型错误data[c][][v][] |
G020 |
传入值超出范围data[c][][v][] |
G021 |
传入值格式错误data[c][][v][] |
代码 |
说明 |
G022 |
传入参数不允许任何操作data[c][][v][] |
G023 |
传入参数不允许任何操作data[c][][w][] |
G024 |
传入参数错误data[c][][w][] |
G025 |
传入参数错误data[c][][w][][] |
G026 |
缺少传入参数data[c][][s] |
G027 |
传入值错误data[c][][s] |
G028 |
传入值不允许任何操作data[c][][s] |
G029 |
传入值不允许查询操作data[c][][s] |
G030 |
传入参数错误data[c][][o][] |
G031 |
传入参数不允许任何操作data[c][][o][] |
G032 |
传入值错误data[c][][o][] |
G033 |
该值仅允许输入两个参数data[c][][l] |
G034 |
传入值错误data[c][][l][] |