1. 程式人生 > >easyopen——一個簡單易用的介面開放平臺

easyopen——一個簡單易用的介面開放平臺

easyopen介紹

一個簡單易用的介面開放平臺,平臺封裝了常用的引數校驗、結果返回等功能,開發者只需實現業務程式碼即可。

easyopen的功能類似於淘寶開放平臺,它的所有介面只提供一個url,通過引數來區分不同業務。這樣做的好處是介面url管理方便了,平臺管理者只需維護好介面引數即可。由於引數的數量是可知的,這樣可以在很大程度上進行封裝。封裝完後平臺開發者只需要寫業務程式碼,其它功能可以通過配置來完成。

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

使用場景

如果你的系統對外提供介面服務就可使用,類似於淘寶開放平臺,騰訊開放平臺,京東開放平臺。

結構圖

easyopen結構圖

  • 伺服器啟動完畢時,從Spring容器中找到被@ApiService標記的業務類
  • 迴圈業務類,找到被@Api標記的方法,並儲存對應的引數,method,物件資訊。
  • 客戶端請求過來時,根據name-version可定位到具體的業務類中的某個方法,然後invoke方法。
  • 包裝結果返回。

功能特點

  • 開箱即用,寫完業務程式碼直接啟動服務即可使用,無需其它配置。
  • 採用數字簽名進行引數驗證,簽名演算法見:easyopen-core\簽名演算法.txt
  • 採用appKey-secret形式接入平臺,即需要給接入方提供一個appKey和secret。
  • 校驗功能和結果返回功能實現各自獨立,方便自定義實現或擴充套件。
  • 平臺開發者只需關注業務程式碼,其它功能由框架來完成。
  • 採用註解來定義介面,維護簡單方便。
  • 支援i18n國際化訊息返回。

快速開始

eclipse下(idea原理一樣)

  • eclipse右鍵import... -> Exsiting Maven Projects。選擇easyopen目錄
  • 匯入到eclipse後會有三個工程,等待相關jar包下載。
  • 全部jar下載完畢後,啟動easyopen-server專案,由於是spring-boot專案,直接執行EasyopenSpringbootApplication.java即可 在easyopen-sdk中找到SdkTest.java測試用例,執行單元測試。

工程說明

  • easyopen-core:easyopen核心程式碼
  • easyopen-server:開放平臺服務端(spring-boot),介面提供方
  • easyopen-sdk:介面對應的開發包,配合server使用
  • static:文件靜態資源
  • index.html:文件首頁,配合Pages功能使用

業務類

找到easyopen-server下面的GoodsApi類,這個就是我們要寫的業務類,內容如下:

// 業務類必須加上@ApiService註解,@ApiService繼承了@Service類可以被Spring管理
@ApiService 
public class GoodsApi {

    @Autowired
    UserService userService; 

    // 在方法上面加@Api註解便可以對外提供了這個介面了,name表示介面名
    @Api(name = "goods.get") 
    public Goods getGoods(GoodsParam param) {
        if(StringUtils.isEmpty(param.getGoods_name())) {
            throw GoodsErrors.NO_GOODS_NAME.getException(); // 丟擲異常
        }
        System.out.println("user:" + userService.getUser());
        Goods goods = new Goods();
        goods.setId(1L);
        goods.setGoods_name("iPhoneX");
        goods.setPrice(new BigDecimal(8000));
        return goods; // 返回業務結果
    }   

}