php mysql APP接口 移动端接口API   M-API 开源代码

发布时间:2020-07-02 09:11:12

51CTO

阅读:2531

作者:我想说我不是神

栏目:数据库

开源协议:Apache License 2.0

源码地址:https://github.com/movie0312/M-API.git

M-API

概述...1

一、接口文档结构...3

二、接口环境设置...3

1.开发环境...3

2.生产环境...3

三、基本配置说明...4

四、配置说明...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.php2.生产环境

需删除以下文件

/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启用gettrue / 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时可选

格式:1.条件关系

'logic' : '具体关系'

字段与字段的条件关系

or/ and默认为and2.具体条件

i.'logic'  : '具体关系'

字段内的条件关系

or/ and默认为and

ii.'字段代号' : {

'条件类型' : '条件值' *条件值有可能是'array'

}

字段代号由后台生成且允许相应操作3.条件类型

等于:'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正常

A001php需要mbstring扩展支持

A002拒绝访问错误身份

C000配置文件调试模式错误

C001配置文件获取数据模式错误

C002配置文件私钥文件的路径错误

C003配置文件公钥文件的路径错误

C004配置文件私钥文件名错误

C005配置文件公钥文件名错误

C006配置文件密送方式错误

C007配置文件加密开关错误

代码说明

C008配置文件数据库参数错误

C009配置文件数据库类型错误

C010mysql基本设置表允许增加开关设置错误

C011mysql基本设置表允许删除开关设置错误

C012mysql基本设置表允许修改开关设置错误

C013mysql基本设置表允许查询开关设置错误

C014mysql基本设置字段允许修改开关设置错误

C015mysql基本设置字段允许查询开关设置错误

C016mysql基本设置字段身份标识开关设置错误

D001php需要pdo_mysql扩展支持

D002数据库连接错误

D003sql执行错误

E001php需要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][]