开源协议: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支持getpost

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

  1. 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' (该选项当rastrue时有效。当cipherfalse时路径后自动增加子文件夹需传入文件夹名称)

public_key_path

公钥文件的路径

'string' (该选项当rastrue时有效。当cipherfalse时路径后自动增加子文件夹需传入文件夹名称)

private_key_name

私钥文件名

'string' (该选项当rastrue时有效)

public_key_name

公钥文件名

'string' (该选项当rastrue时有效)

get

启用get

true / false(一般为false;当rsatrue时需为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

身份标识

当为身份标识时接口内部使用;每个表仅有一个字段需要设置该属性;禁止任何外部调用; editselect设置失效。默认为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返回增加id1, 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. 1.      条件关系

'logic' : '具体关系'

字段与字段的条件关系

or / and 默认为and

  1. 2.      具体条件

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

字段内的条件关系

or / and 默认为and

ii.   '字段代号' : {

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

}

字段代号由后台生成且允许相应操作

  1. 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

正常

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][]