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

easyopen介紹

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

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

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

使用場景

若是你的系統對外提供接口服務就可以使用,相似於淘寶開放平臺,騰訊開放平臺,京東開放平臺。算法

結構圖

easyopen結構圖

  • 服務器啓動完畢時,從Spring容器中找到被@ApiService標記的業務類
  • 循環業務類,找到被@Api標記的方法,並保存對應的參數,method,對象信息。
  • 客戶端請求過來時,根據name-version可定位到具體的業務類中的某個方法,而後invoke方法。
  • 包裝結果返回。

功能特色

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

快速開始

eclipse下(idea原理同樣)spring

  • 下載或clone項目https://gitee.com/durcframework/easyopen.git 下載zip
  • 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類,這個就是咱們要寫的業務類,內容以下:api

// 業務類必須加上@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; // 返回業務結果
    }   

}

更多功能可查看easyopen開發文檔http://durcframework.gitee.io/easyopen服務器

相關文章
相關標籤/搜索