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