摘要:服務端架構(gòu)代碼源碼部署說明現(xiàn)有基于框架開發(fā),本次介紹也針對。如接口名,對應的類文件及類名為接口命名規(guī)范命名字母按功能或模塊從大到小劃分,依次編寫如后臺用戶修改密碼字母最后單詞為操作。
API服務端架構(gòu)代碼 源碼
http://flc.ren/2016/08/549.html
https://github.com/flc1125/Ap...
現(xiàn)有API基于laravel框架開發(fā),本次介紹也針對laravel。可根據(jù)文檔自行調(diào)整,以適用其他框架下使用數(shù)據(jù)庫相關(guān)
執(zhí)行如下SQL語句
CREATE TABLE `prefix_apps` ( `id` INT(10) NOT NULL AUTO_INCREMENT COMMENT "自增長", `app_id` VARCHAR(60) NOT NULL COMMENT "appid", `app_secret` VARCHAR(100) NOT NULL COMMENT "密鑰", `app_name` VARCHAR(200) NOT NULL COMMENT "app名稱", `app_desc` TEXT COMMENT "描述", `status` TINYINT(2) DEFAULT "0" COMMENT "生效狀態(tài)", `created_at` INT(10) NOT NULL DEFAULT "0" COMMENT "創(chuàng)建時間", `updated_at` INT(10) NOT NULL DEFAULT "0" COMMENT "更新時間", PRIMARY KEY (`id`), UNIQUE KEY `app_id` (`app_id`), KEY `status` (`status`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT="應用表";目錄相關(guān)
標題 | 路徑 |
---|---|
API核心目錄 | app/Services/ApiServer/ |
API接口目錄 | app/Services/ApiServer/Response/ |
apps數(shù)據(jù)庫模型 | app/Models/App.php |
路由配置 | app/Http/routes.php |
API入口控制器 | app/Http/Controllers/Api/RouterController.php |
請求地址:/api/router;公共參數(shù)請求方式:POST/GET
參數(shù)名 | 類型 | 是否必須 | 描述 |
---|---|---|---|
app_id | string | 是 | 應用ID |
method | string | 是 | 接口名稱 |
format | string | 否 | 回調(diào)格式,默認:json(目前僅支持) |
sign_method | string | 否 | 簽名類型,默認:md5(目前僅支持) |
nonce | string | 是 | 隨機字符串,長度1-32位任意字符 |
sign | string | 是 | 簽名字符串,參考簽名規(guī)則 |
API調(diào)用除了必須包含公共參數(shù)外,如果API本身有業(yè)務級的參數(shù)也必須傳入,每個API的業(yè)務級參數(shù)請考API文檔說明。簽名規(guī)則
對所有API請求參數(shù)(包括公共參數(shù)和請求參數(shù),但除去sign參數(shù)),根據(jù)參數(shù)名稱的ASCII碼表的順序排序。如:foo=1, bar=2, foo_bar=3, foobar=4排序后的順序是bar=2, foo=1, foo_bar=3, foobar=4。
將排序好的參數(shù)名和參數(shù)值拼裝在一起,根據(jù)上面的示例得到的結(jié)果為:bar2foo1foo_bar3foobar4。
把拼裝好的字符串采用utf-8編碼,使用簽名算法對編碼后的字節(jié)流進行摘要。如果使用MD5算法,則需要在拼裝的字符串前后加上app的secret后,再進行摘要,如:md5(secret+bar2foo1foo_bar3foobar4+secret)
將摘要得到的字節(jié)結(jié)果使用大寫表示
返回結(jié)果// 成功 { "status": true, "code": "200", "msg": "成功", "data": { "time": "2016-08-02 12:07:09" } } // 失敗 { "status": false, "code": "1001", "msg": "[app_id]缺失" }API開發(fā)規(guī)范 API接口命名規(guī)范(method)
接口名稱統(tǒng)一小寫字母
多單詞用.隔開
對應的類文件(目錄:app/Services/ApiServer/Response/);以接口名去.,再首字母大寫作為類名及文件名。如接口名:user.add,對應的類文件及類名為:UserAdd
接口命名規(guī)范
命名字母按功能或模塊從大到小劃分,依次編寫;如后臺用戶修改密碼:"admin.user.password.update"
字母最后單詞為操作。查詢:get;新增:add;更新:update;刪除:delete;上傳:upload;等
錯誤碼錯誤碼配置:app/Services/ApiServer/Error.php
命名規(guī)范:
類型 | 長度 | 說明 |
---|---|---|
系統(tǒng)碼 | 3 | 同http狀態(tài)碼 |
公共錯誤碼 | 4 | 公共參數(shù)錯誤相關(guān)的錯誤碼 |
業(yè)務錯誤碼 | 6+ | 2位業(yè)務碼+4位錯誤碼,不足補位 |
現(xiàn)有錯誤碼:
錯誤碼 | 錯誤內(nèi)容 |
---|---|
200 | 成功 |
400 | 未知錯誤 |
401 | 無此權(quán)限 |
500 | 服務器異常 |
1001 | [app_id]缺失 |
1002 | [app_id]不存在或無權(quán)限 |
1003 | [method]缺失 |
1004 | [format]錯誤 |
1005 | [sign_method]錯誤 |
1006 | [sign]缺失 |
1007 | [sign]簽名錯誤 |
1008 | [method]方法不存在 |
1009 | run方法不存在,請聯(lián)系管理員 |
1010 | [nonce]缺失 |
1011 | [nonce]必須為字符串 |
1012 | [nonce]長度必須為1-32位 |
文件路徑:app/Services/ApiServer/Response/Demo.php
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/21833.html
showImg(https://segmentfault.com/img/bV6aHV?w=1280&h=800); 社區(qū)優(yōu)秀文章 Laravel 5.5+passport 放棄 dingo 開發(fā) API 實戰(zhàn),讓 API 開發(fā)更省心 - 自造車輪。 API 文檔神器 Swagger 介紹及在 PHP 項目中使用 - API 文檔撰寫方案 推薦 Laravel API 項目必須使用的 8 個...
摘要:的機器學習庫的機器學習庫,包括算法交叉驗證神經(jīng)網(wǎng)絡等內(nèi)容。在即將到來的大會上,她將和大家分享在機器學習領(lǐng)域的全新可能。入門總結(jié)入門相關(guān),如安裝配置基本使用等。 基于 Swoole 開發(fā) PHP 擴展 Swoole-1.9.7 增加了一個新特性,可以基于 Swoole 使用 C++ 語言開發(fā)擴展模塊,在擴展模塊中可以注冊 PHP 內(nèi)置函數(shù)和類。現(xiàn)在可以基于 Swoole 來編寫 PHP ...
摘要:提供服務端渲染單頁面渲染實現(xiàn)骨架同時集成打包構(gòu)建文件名實現(xiàn)內(nèi)置等套件提供端渲染方案前后端分離單頁面方案前后端分離單頁面方案等三種常見方案項目地址歡迎項目需求基于和提供的強大的功能組合并根據(jù)已有項目實踐經(jīng)驗提供完整的集成方案幫助快速 Laravel-Vue-SSR-SPA 提供服務端渲染/單頁面渲染實現(xiàn)骨架, 同時集成webpack打包構(gòu)建 MD5文件名/gzip 實現(xiàn), 內(nèi)置 vue-...
摘要:提供服務端渲染單頁面渲染實現(xiàn)骨架同時集成打包構(gòu)建文件名實現(xiàn)內(nèi)置等套件提供端渲染方案前后端分離單頁面方案前后端分離單頁面方案等三種常見方案項目地址歡迎項目需求基于和提供的強大的功能組合并根據(jù)已有項目實踐經(jīng)驗提供完整的集成方案幫助快速 Laravel-Vue-SSR-SPA 提供服務端渲染/單頁面渲染實現(xiàn)骨架, 同時集成webpack打包構(gòu)建 MD5文件名/gzip 實現(xiàn), 內(nèi)置 vue-...
摘要:一個動作類,應該有一個能夠說明其功能的名字,比如等。如果需要對我們的動作類實現(xiàn)某種適配器模式,這是非常方便的。使用單動作類的好處小巧而單一的邏輯域能夠防止代碼重復并提高代碼的可重用性,保持穩(wěn)定。易于針對各種場景進行獨立測試。 showImg(https://segmentfault.com/img/remote/1460000015208092); 當我們談論到應用程序的架構(gòu)的時候,經(jīng)...
閱讀 1474·2021-11-24 09:39
閱讀 1445·2021-11-04 16:12
閱讀 2816·2021-09-24 09:47
閱讀 3424·2021-09-01 10:50
閱讀 1559·2019-08-30 15:55
閱讀 1501·2019-08-30 15:43
閱讀 724·2019-08-30 11:08
閱讀 3655·2019-08-23 18:33