您好,登錄后才能下訂單哦!
開源協(xié)議:Apache License 2.0
源碼地址:https://github.com/movie0312/M-API.git
M-API
概述... 1
一、 接口文檔結(jié)構(gòu)... 3
二、 接口環(huán)境設(shè)置... 3
1. 開發(fā)環(huán)境... 3
2. 生產(chǎn)環(huán)境... 3
三、 基本配置說明... 4
四、 mysql配置說明... 5
五、 對外接口入口配置說明... 7
六、 接口參數(shù)說明... 7
七、 code代碼說明... 12
概述
為了方便前端以及移動(dòng)端接口的開發(fā),將相應(yīng)功能整合為一個(gè)可快速設(shè)置應(yīng)用的Web API,從而加快項(xiàng)目開發(fā)的周期。M-API通過簡單設(shè)置可將數(shù)據(jù)庫選擇性的暴露給調(diào)用方。當(dāng)然,為了安全考慮,建議設(shè)置相應(yīng)的操作權(quán)限。該文檔適合有一定基礎(chǔ)的PHPer。
M-API開發(fā)環(huán)境為:php-7.0.4, mysql-5.7.11。同時(shí)支持php5.6.0,其它版本未進(jìn)行測試。
M-API運(yùn)行環(huán)境需要開啟mbstring;加密操作需要開啟openssl;數(shù)據(jù)庫操作需要開啟pdo_mysql。
M-API支持密送和簽名。目前只支持RSA加密。鑒于RSA的特性,當(dāng)交互信息量較大時(shí)建議修改為僅加密處理敏感信息,其它信息采用對稱加密;或?qū)鬏攨f(xié)議改為HTTPS。如果必須使用RSA,可將信息進(jìn)行分段處理。
M-API支持get和post。
M-API數(shù)據(jù)庫目前僅支持mysql。
M-API全部采用PDO 預(yù)處理操作數(shù)據(jù)庫。
M-API支持mysql字段有:char, varchar, tinyint, smallint, mediumint, int, bigint, decimal, text。
M-API支持同時(shí)多個(gè)數(shù)據(jù)庫連接。同樣,也支持同時(shí)多組基本設(shè)置調(diào)用。
M-API支持表級(jí)別和列級(jí)別的操作權(quán)限設(shè)置。
M-API可指定關(guān)聯(lián)字段,以避免注入。
M-API支持自動(dòng)數(shù)據(jù)有效性的驗(yàn)證。可手動(dòng)指定正則驗(yàn)證。
M-API接收和傳出數(shù)據(jù)均為json。
M-API不支持事務(wù)。請?jiān)跇I(yè)務(wù)邏輯中進(jìn)行處理。
M-API不支持聯(lián)結(jié)查詢。請使用視圖查詢。
最終解釋權(quán)歸開發(fā)者所有。
未盡事宜,后續(xù)補(bǔ)充。
能力一般,水平有限。請多多包涵。
/class/basic.class.php————————基礎(chǔ)類 基本配置信息
/class/mysql.class.php————————數(shù)據(jù)庫類 mysql
/class/mysql.config.class.php——————mysql配置類
/class/rsa.class.php——————————加密類 rsa
/class/standard.class.php———————標(biāo)準(zhǔn)類常用函數(shù)
/pem/————————————————密鑰
/index.php——————————————對外接口入口
/showstruct.php——————————— 快速顯示數(shù)據(jù)庫結(jié)構(gòu)
需要配置以下文件
/class/basic.class.php
/class/mysql.config.class.php
/index.php
2. 生產(chǎn)環(huán)境
需刪除以下文件
/readme.docx
/showstruct.php
public static $_config =array(
'default'=> array(
'參數(shù)' => ‘值’
),
'自定義配置名'=> array(
'參數(shù)' => '值'
)
);
基本配置 | ||
參數(shù) | 說明 | 值 |
display_errors | 啟用調(diào)試 | true / false |
rsa | 啟用rsa加密 | true / false |
cipher | 啟用密送 | true / false |
private_key_path | 私鑰文件的路徑 | 'string' (該選項(xiàng)當(dāng)ras為true時(shí)有效。當(dāng)cipher為false時(shí)路徑后自動(dòng)增加子文件夾需傳入文件夾名稱) |
public_key_path | 公鑰文件的路徑 | 'string' (該選項(xiàng)當(dāng)ras為true時(shí)有效。當(dāng)cipher為false時(shí)路徑后自動(dòng)增加子文件夾需傳入文件夾名稱) |
private_key_name | 私鑰文件名 | 'string' (該選項(xiàng)當(dāng)ras為true時(shí)有效) |
public_key_name | 公鑰文件名 | 'string' (該選項(xiàng)當(dāng)ras為true時(shí)有效) |
get | 啟用get | true / false(一般為false;當(dāng)rsa為true時(shí)需為false) |
參數(shù) | 說明 | 值 |
db_type | 數(shù)據(jù)庫類型 | mysql |
db_host | 服務(wù)器地址 | 'string' |
db_port | 端口 | 'int' |
db_name | 數(shù)據(jù)庫名 | 'string' |
db_user | 用戶名 | 'string' |
db_pwd | 密碼 | 'string' |
配置說明
可通過/showstruct.php快速生成。但生成后仍建議設(shè)置相應(yīng)權(quán)限。
public static $_tables =array(
'0'=> array(
'0' => '表名1',
'參數(shù)' =>'值'
),
'1'=> array(
'0' => '表名2',
'參數(shù)' =>'值'
)
);
public static $_fields =array(
'0'=> array(
'0' => '字段名1',
'1' => '字段類型1',
'參數(shù)' =>'值'
),
'1'=> array(
'0' => '字段名2',
'1' => '字段類型2',
'參數(shù)' =>'值'
)
);
表權(quán)限配置 | ||
參數(shù) | 說明 | 值 |
add | 允許增加 | true / false 默認(rèn)為true |
del | 允許刪除 | true / false 默認(rèn)為true |
edit | 允許修改 | true / false 默認(rèn)為true |
select | 允許查詢 | true / false 默認(rèn)為true |
字段權(quán)限配置 | ||
isuid | 身份標(biāo)識(shí) | 當(dāng)為身份標(biāo)識(shí)時(shí)接口內(nèi)部使用;每個(gè)表僅有一個(gè)字段需要設(shè)置該屬性;禁止任何外部調(diào)用; edit和select設(shè)置失效。默認(rèn)為false |
edit | 允許修改 | true / false 默認(rèn)為true |
select | 允許查詢 | true / false 默認(rèn)為true |
pattern | 正則過濾 | 'string' 正則表達(dá)式 默認(rèn)為空 |
根據(jù)$data['b']['i']做用戶操作權(quán)限判斷。
根據(jù)$data['b']['d']做用戶操作時(shí)限判斷。
根據(jù)$data['b']['t']做用戶身份判斷并賦值$_uid。
傳入?yún)?shù) | ||
參數(shù) | 說明 | 值 |
data | 傳入值 | 'string' (加密/非加密) json |
傳出參數(shù) | ||
參數(shù) | 說明 | 值 |
state | 執(zhí)行狀態(tài) | 0未執(zhí)行 / 1已執(zhí)行 |
code | 返回代碼 | 參閱“code代碼說明” |
info | 返回信息 | 'string' (加密/非加密) json |
data名稱 / 值列表 (以javascript為例) | ||
名稱 | 說明 | 值 |
data[b] | 基本內(nèi)容 | 'array' (參下) |
data[b][i] | 身份標(biāo)識(shí) | 'string' 必需 例: var temp = 'id'; |
data[b][d] | 時(shí)間戳 | 'int' 必需 例: var temp = 1461143961; |
名稱 | 說明 | 值 |
data[b][t] | 令牌 | 'string' (身份id + MD5(登陸密碼 ) + 時(shí)間戳) 可選 (沒有該鍵的情況下默認(rèn)為seeion驗(yàn)證) 例: var temp = 'id49ba59abbe56e0571461143961'; |
data[c] | 執(zhí)行內(nèi)容 | 'array' (參下) |
data[c][][a] | 操作類型 | 'int' (0增加, 1刪除, 2修改, 3查詢) 必需 0返回增加id;1, 2返回影響行數(shù);3返回具體array。 例: var temp = 0; |
data[c][][t] | 操作的表 | 'int' (后臺(tái)生成且允許相應(yīng)操作) 必需 例: var temp = 1; |
data[c][][V] | 字段值 | 'array' 操作類型為0, 2時(shí)必需 格式:'字段代號(hào)' : '字段值' 字段代號(hào)由后臺(tái)生成且允許相應(yīng)操作 例: var temp = { '1' : 'abc', '2' : true, '3' : 1, }; |
data[c][][w] | 條件 | 'array' 操作類型為1, 2, 3時(shí)可選 格式:
'logic' : '具體關(guān)系' 字段與字段的條件關(guān)系 or / and 默認(rèn)為and
i. 'logic' : '具體關(guān)系' 字段內(nèi)的條件關(guān)系 or / and 默認(rèn)為and ii. '字段代號(hào)' : { '條件類型' : '條件值' *條件值有可能是'array' } 字段代號(hào)由后臺(tái)生成且允許相應(yīng)操作
等于:'eq' : '具體值' 不等于:'neq' : '具體值' 大于:'gt' : '具體值' 大于等于:'egt' : '具體值' 小于:'lt' : '具體值' 小于等于:'elt' : '具體值' 模糊查詢: 'like' : '具體值' 'like' : 'arrayA' arrayA: '0' : 'arrayB', '1' : '條件關(guān)系(or / and)' arrayB: '索引' : '具體值' 模糊查詢(反):'notlike' : '具體值' 區(qū)間查詢: 'between' : 'array' array: '0' : '起始值', '1' : '結(jié)束值' 區(qū)間查詢(反):'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時(shí)必需 格式:'字段代號(hào)1, 字段代號(hào)2, 字段代號(hào)3,……' 字段代號(hào)由后臺(tái)生成且允許相應(yīng)操作 例: var temp = ['1', '2', '3', '5']; |
data[c][][o] | 排序 | 'array' 操作類型為3時(shí)可選 格式:'字段代號(hào)' : '排序方式' 排序方式:'' / desc默認(rèn)為空(升序) 字段代號(hào)由后臺(tái)生成且允許相應(yīng)操作 例: var temp = { '1' : '', '2' : 'desc' }; |
data[c][][l] | 起始和數(shù)量 | 'string' 操作類型為3時(shí)可選 格式:'起始, 數(shù)量' 例: var temp = ['1', '5']; |
代碼說明
代碼 | 說明 |
0000 | 正常 |
A001 | php需要mbstring擴(kuò)展支持 |
A002 | 拒絕訪問錯(cuò)誤身份 |
C000 | 配置文件調(diào)試模式錯(cuò)誤 |
C001 | 配置文件獲取數(shù)據(jù)模式錯(cuò)誤 |
C002 | 配置文件私鑰文件的路徑錯(cuò)誤 |
C003 | 配置文件公鑰文件的路徑錯(cuò)誤 |
C004 | 配置文件私鑰文件名錯(cuò)誤 |
C005 | 配置文件公鑰文件名錯(cuò)誤 |
C006 | 配置文件密送方式錯(cuò)誤 |
C007 | 配置文件加密開關(guān)錯(cuò)誤 |
代碼 | 說明 |
C008 | 配置文件數(shù)據(jù)庫參數(shù)錯(cuò)誤 |
C009 | 配置文件數(shù)據(jù)庫類型錯(cuò)誤 |
C010 | mysql基本設(shè)置表允許增加開關(guān)設(shè)置錯(cuò)誤 |
C011 | mysql基本設(shè)置表允許刪除開關(guān)設(shè)置錯(cuò)誤 |
C012 | mysql基本設(shè)置表允許修改開關(guān)設(shè)置錯(cuò)誤 |
C013 | mysql基本設(shè)置表允許查詢開關(guān)設(shè)置錯(cuò)誤 |
C014 | mysql基本設(shè)置字段允許修改開關(guān)設(shè)置錯(cuò)誤 |
C015 | mysql基本設(shè)置字段允許查詢開關(guān)設(shè)置錯(cuò)誤 |
C016 | mysql基本設(shè)置字段身份標(biāo)識(shí)開關(guān)設(shè)置錯(cuò)誤 |
D001 | php需要pdo_mysql擴(kuò)展支持 |
D002 | 數(shù)據(jù)庫連接錯(cuò)誤 |
D003 | sql執(zhí)行錯(cuò)誤 |
E001 | php需要openssl擴(kuò)展支持 |
E002 | 私鑰文件不存在 |
E003 | 私鑰不可用 |
E004 | 公鑰文件不存在 |
E005 | 公鑰不可用 |
E006 | 加密出錯(cuò) |
E007 | 解密出錯(cuò) |
E008 | 私鑰路徑錯(cuò)誤 |
E009 | 公鑰路徑錯(cuò)誤 |
代碼 | 說明 |
G001 | 缺少傳入?yún)?shù)data[b] |
G002 | 缺少傳入?yún)?shù)data[b][i] |
G003 | 傳入值錯(cuò)誤data[b][i] |
G004 | 缺少傳入?yún)?shù)data[b][d] |
G005 | 傳入值錯(cuò)誤data[b][d] |
G006 | 缺少傳入?yún)?shù)data[c] |
G007 | 缺少傳入?yún)?shù)data[c][][a] |
G008 | 傳入值錯(cuò)誤data[c][][a] |
G009 | 缺少傳入?yún)?shù)data[c][][t] |
G010 | 傳入值錯(cuò)誤data[c][][t] |
G011 | 傳入?yún)?shù)不允許增加操作data[c][][t] |
G012 | 傳入?yún)?shù)不允許刪除操作data[c][][t] |
G013 | 傳入?yún)?shù)不允許修改操作data[c][][t] |
G014 | 傳入?yún)?shù)不允許查詢操作data[c][][t] |
G015 | 缺少傳入?yún)?shù)data[c][][v] |
G016 | 傳入?yún)?shù)不允許更改操作data[c][][v][] |
G017 | 傳入?yún)?shù)錯(cuò)誤data[c][][v][] |
G018 | 傳入值不允許為空data[c][][v][] |
G019 | 傳入值類型錯(cuò)誤data[c][][v][] |
G020 | 傳入值超出范圍data[c][][v][] |
G021 | 傳入值格式錯(cuò)誤data[c][][v][] |
代碼 | 說明 |
G022 | 傳入?yún)?shù)不允許任何操作data[c][][v][] |
G023 | 傳入?yún)?shù)不允許任何操作data[c][][w][] |
G024 | 傳入?yún)?shù)錯(cuò)誤data[c][][w][] |
G025 | 傳入?yún)?shù)錯(cuò)誤data[c][][w][][] |
G026 | 缺少傳入?yún)?shù)data[c][][s] |
G027 | 傳入值錯(cuò)誤data[c][][s] |
G028 | 傳入值不允許任何操作data[c][][s] |
G029 | 傳入值不允許查詢操作data[c][][s] |
G030 | 傳入?yún)?shù)錯(cuò)誤data[c][][o][] |
G031 | 傳入?yún)?shù)不允許任何操作data[c][][o][] |
G032 | 傳入值錯(cuò)誤data[c][][o][] |
G033 | 該值僅允許輸入兩個(gè)參數(shù)data[c][][l] |
G034 | 傳入值錯(cuò)誤data[c][][l][] |
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。