版本1.2.0新特性
1、client端,新增javascript版本實作:前端js可使用提供的client,直接調用xxl-hex的加密api接口; (示例檔案見 "xxl-hex/xxl-hex-example/src/main/webapp/jsclient.html",啟動 "xxl-hex-example" 項目通路即可);
2、server端,新增明文模式:如果系統不需要hex加密特性,可選擇明文資料傳輸方案;
《面向對象的webapi架構xxl-hex》
一、簡介
1.1 概述
xxl-hex 是一個簡單易用的webapi架構, 擁有 "面向對象、資料加密、跨語言" 的特點。目标是: 提高web api (如 android、ios 等app接口, 或者 unity3d 等遊戲服務端接口) 的開發體驗以及開發效率。現已開放源代碼,開箱即用。
1.2 特性
1、面向對象: 一個api接口對應 "一個handler" 和 "requset對象/response對象"; 針對web api開發 (如 android、ios 等app接口開發, 或者 unity3d 等遊戲接口開發), 采用面向對象的思維去開發 web api接口。提高api接口的開發效率以及開發體驗;
2、資料加密: 通訊資料以16進制資料的形式存在, 資料天然加密; 同時, 底層為api接口預留了api校驗接口, 可友善的擴充資料加密邏輯, 進一步校驗資料安全性;
3、跨語言: 一個api接口, 開發一次, 支援任何語言調用(系統開放底層通信協定, 任何語言可靈活定制自己語言的client端實作), 無論client端是android、ios、c#開發的u3d遊戲等等;
1.3 背景
面向對象
當我們為app(安卓、ios等)開發api接口時, 我們可能采用類似 restful 等方案, 但是此時api接口請求參數和響應資料比較零散, 需要針對多個參數進行繁瑣的參數擷取指派等操作, 維護和使用比較繁瑣。
是以, 我們考慮上述web api接口是否可以換一種面向對象的開發方式。在新系統中, 開發每一個api接口需要定義一個handler類, 同時綁定request對象和response對象, 系統底層會自動把請求對象指派給request對象, 我們隻需要調用request對象中屬性值即可。同樣的, 我們隻需要把響應資料指派給response對象即可; 自此, api接口的開發效率和開發體驗将會大幅度提升;
資料加密
正常api接口服務資料以明文格式存在, 資料易暴露業務資訊, 如遭遇惡意爬蟲或者ddos攻擊, 輕則加重伺服器負擔, 伺服器處理了外部非法的接口請求; 重則篡改線上業務資料, 造成嚴重後果。
xxl-hex 的api接口通訊資料以hex的格式存在, 天然加密, 安全性相對較高。初次之外, 支援自由擴充api接口的校驗邏輯, 進一步校驗資料安全性, 提高體統的整體安全性;
跨語言
當我們提供api接口, 調用方千差萬别, 如下:
1、android (java)
2、ios (object-c)
3、j2ee
4、php web
5、.net
6、unity3d (c#)
7、pc用戶端 (c++)
存在如此多的異構系統的情形下, 一種跨語言的 api 通訊方案顯得尤為重要。
如果簡單實作跨語言則 restful 等方案可簡單實作, 但是如若要相容上述 "面向對象" 和 "資料加密" 的特點, 同時保證系統簡易且穩定則存在一定難度。xxl-hex得益于其基于hex的特性以及底層特殊資料結構, 在保證相容上述特性的技術上, 天然支援跨語言。