開源協議:Apache License 2.0javascript
源碼地址:https://github.com/movie0312/M-API.gitphp
M-API前端
概述... 1java
1、 接口文檔結構... 3mysql
1. 開發環境... 3github
2. 生產環境... 3正則表達式
概述
爲了方便前端以及移動端接口的開發,將相應功能整合爲一個可快速設置應用的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
需刪除如下文件
/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][] |