easyopen是一個簡單易用的介面開放平台,平台封裝了常用的參數校驗、結果回傳等功能,開發者只需實作業務程式碼即可。
easyopen的功能類似於淘寶開放平台,它的所有介面只提供一個url,透過參數來區分不同業務。這樣做的好處是介面url管理方便了,平台管理者只需維護好介面參數即可。由於參數的數量是可知的,這樣可以在很大程度上進行封裝。封裝後平台開發者只需要寫入業務代碼,其它功能可以透過配置來完成。
得益於Java的註解功能以及Spring容器對bean的管理,我們的開放介面平台就這樣產生了。
1、開箱即用,寫完業務代碼直接啟動服務即可使用,無需其它配置。
2、參數自動校驗,支援國際化參數校驗(JSR-303)。
3.校驗功能和結果回傳功能實現各自獨立,方便自訂實作或擴充。
4.採用註解來定義接口,維護簡單方便。
5、支援i18n國際化訊息返回。
6.自動產生文件頁面,類似swagger。
7.採用數位簽章進行參數驗證,簽章演算法見:easyopen簽章演算法.txt。
8.採用appKey-secret形式接取平台,即需要提供給接入方一個appKey和secret。
加密演算法(MD5、AES、RSA)
Netty(編解碼、長連接、斷開重連)
限流(漏桶策略、令牌桶策略)
權限(RBAC、校驗)
session(單機、分散式)
註解(文檔生成)
token(jwt、accessToken)
SDK(Java、C#、JavaScript)
配置中心截圖
文件頁面
定義介面
@Api(name = "goods.get")public Goods getGoods(GoodsParam param) { Goods goods = new Goods(); goods.setId(1L); goods.setGoods_name("蘋果iPhoneX"); goods.setPrice(new BigDecimal (8000)); return goods;}
請求數據
{ "name": "goods.get", "version": "", "app_key": "test", "data": "%7B%22goodsPrice%22%3A%22%22%2C%22goods_name%22% 3A%22iphoneX%22%7D", "timestamp": "2018-03-22 13:48:58", "format": "json", "sign": "C946ACA5AC95B1790511764A10E675B7"}
回傳結果
{ "code":"0", "data":{ "goods_name":"蘋果iPhoneX", "id":1, "price":8000 }}
easyopen:easyopen:核心程式碼
easyopen-configuration:設定中心[可選]
easyopen-demo:介面服務端demo(含springboot,springmvc)
easyopen-ext:擴充包(提供增強功能如熔斷降級等功能)
easyopen-sdk:介面對應的SDK(含Java,C#,Javascript)
easyopen-starter:springboot對應的starter
develop-doc:開發文檔
1.啟動easyopen-demo下的easyopen-server-manual(業務程式碼在GoodsApi.java中)
2.運行easyopen-sdk下的sdk-java中的SdkTest.java