一個簡單易用的接口開放平臺

easyopen

一個簡單易用的接口開放平臺,平臺封裝了經常使用的參數校驗、結果返回等功能,開發者只需實現業務代碼便可。git

easyopen的功能相似於淘寶開放平臺,它的全部接口只提供一個url,經過參數來區分不一樣業務。這樣作的好處是接口url管理方便了,平臺管理者只需維護好接口參數便可。因爲參數的數量是可知的,這樣能夠在很大程度上進行封裝。封裝完後平臺開發者只須要寫業務代碼,其它功能能夠經過配置來完成。算法

得益於Java的註解功能以及Spring容器對bean的管理,咱們的開放接口平臺就這樣產生了。json

功能特色

  • 開箱即用,寫完業務代碼直接啓動服務便可使用,無需其它配置。
  • 參數自動校驗,支持國際化參數校驗(JSR-303)。
  • 校驗功能和結果返回功能實現各自獨立,方便自定義實現或擴展。
  • 採用註解來定義接口,維護簡單方便。
  • 支持i18n國際化消息返回。
  • 自動生成文檔頁面,相似swagger。
  • 採用數字簽名進行參數驗證,簽名算法見:easyopen簽名算法.txt。
  • 採用appKey-secret形式接入平臺,即須要給接入方提供一個appKey和secret。

技術點

  • 加密算法(MD五、AES、RSA)
  • Netty(編解碼、長鏈接、斷開重連)
  • 多線程(等待喚醒、CountDownLatch)
  • 限流(限流策略、分佈式限流)
  • 權限(RBAC、校驗)
  • session(單機、分佈式)
  • 註解(文檔生成)
  • token(jwt、accessToken)
  • SDK(Java、C#、JavaScript)

結構圖

easyopen架構

文檔頁面

文檔

示例

  • 定義接口:
@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
    }
}

源碼api

相關文章
相關標籤/搜索