基於Laravel的API服務端架構代碼

API服務端架構代碼

源碼

http://flc.ren/2016/08/549.html
https://github.com/flc1125/Ap...php

部署說明

現有API基於laravel框架開發,本次介紹也針對laravel。可根據文檔自行調整,以適用其餘框架下使用

數據庫相關

執行以下SQL語句html

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 '生效狀態',
  `created_at` INT(10) NOT NULL DEFAULT '0' COMMENT '建立時間',
  `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='應用表';

目錄相關

標題 路徑
API核心目錄 app/Services/ApiServer/
API接口目錄 app/Services/ApiServer/Response/
apps數據庫模型 app/Models/App.php
路由配置 app/Http/routes.php
API入口控制器 app/Http/Controllers/Api/RouterController.php

API文檔及開發規範

API調用協議

請求地址及請求方式

請求地址: /api/router;

請求方式:POST/GETlaravel

公共參數

參數名 類型 是否必須 描述
app_id string 應用ID
method string 接口名稱
format string 回調格式,默認:json(目前僅支持)
sign_method string 簽名類型,默認:md5(目前僅支持)
nonce string 隨機字符串,長度1-32位任意字符
sign string 簽名字符串,參考簽名規則

業務參數

API調用除了必須包含公共參數外,若是API自己有業務級的參數也必須傳入,每一個API的業務級參數請考API文檔說明。

簽名規則

  • 對全部API請求參數(包括公共參數和請求參數,但除去sign參數),根據參數名稱的ASCII碼錶的順序排序。如:foo=1, bar=2, foo_bar=3, foobar=4排序後的順序是bar=2, foo=1, foo_bar=3, foobar=4
  • 將排序好的參數名和參數值拼裝在一塊兒,根據上面的示例獲得的結果爲:bar2foo1foo_bar3foobar4。
  • 把拼裝好的字符串採用utf-8編碼,使用簽名算法對編碼後的字節流進行摘要。若是使用MD5算法,則須要在拼裝的字符串先後加上app的secret後,再進行摘要,如:md5(secret+bar2foo1foo_bar3foobar4+secret)
  • 將摘要獲得的字節結果使用大寫表示

返回結果

// 成功
{
    "status": true,
    "code": "200",
    "msg": "成功",
    "data": {
        "time": "2016-08-02 12:07:09"
    }
}

// 失敗
{
    "status": false,
    "code": "1001",
    "msg": "[app_id]缺失"
}

API開發規範

API接口命名規範(method)

  • 接口名稱統一小寫字母
  • 多單詞用.隔開
  • 對應的類文件(目錄:app/Services/ApiServer/Response/);以接口名去.,再首字母大寫做爲類名及文件名。如接口名:user.add,對應的類文件及類名爲:UserAdd
  • 接口命名規範git

    • 命名字母按功能或模塊從大到小劃分,依次編寫;如後臺用戶修改密碼:'admin.user.password.update'
    • 字母最後單詞爲操做。查詢:get;新增:add;更新:update;刪除:delete;上傳:upload;等

錯誤碼

錯誤碼配置: app/Services/ApiServer/Error.php

命名規範:github

類型 長度 說明
系統碼 3 http狀態碼
公共錯誤碼 4 公共參數錯誤相關的錯誤碼
業務錯誤碼 6+ 2位業務碼+4位錯誤碼,不足補位

現有錯誤碼:算法

錯誤碼 錯誤內容
200 成功
400 未知錯誤
401 無此權限
500 服務器異常
1001 [app_id]缺失
1002 [app_id]不存在或無權限
1003 [method]缺失
1004 [format]錯誤
1005 [sign_method]錯誤
1006 [sign]缺失
1007 [sign]簽名錯誤
1008 [method]方法不存在
1009 run方法不存在,請聯繫管理員
1010 [nonce]缺失
1011 [nonce]必須爲字符串
1012 [nonce]長度必須爲1-32位

API DEMO 示例

文件路徑:app/Services/ApiServer/Response/Demo.phpsql

相關文章
相關標籤/搜索