最近兩年一直在做API接口相關的工作,在平時工作中以及網上看到很多剛接觸API接口調用的新人一開始會感到很不適應,要看的文檔一大堆,自己要調用的接口找不着,或都找着了不知道怎么去調用,記得包括自己剛開始做API接口調用的相關工作時,也是比較抓狂的,也是硬着頭皮去看各種文檔,熟悉代碼,在網上不斷地去查找資料。所以決定寫一序列文章把之前做的API接口相關的工作做個總結,二來寫一個通用SDK把之前涉及到的代碼封裝成類庫,以便以后可以更好地使用。就不用再重創輪子了,三來對一些有需要的朋友,比如剛接觸API接口調用的朋友來說,希望可以給他們提供一些幫助,一起交流,共同成長,一起進步。
今天這篇文章主要是談一下自己的需求構想,SDK產品相對來說還是涉及到的東西不多,同時也希望園內的朋友提出自己寶貴的意見,如果感興趣的朋友也可以參與起來。還是那句話,共同學習,共同成長。作為一個超過10年工作經驗的老鳥來說,或多或少還是可以給一個剛畢業或工作時間不長的開發人員提供一些幫助的。這個就是看你們有沒有興趣了,還有是不是想學一些相關的東西。
首先代碼開源,放在github或類似的代碼托管庫上,使用git作為源代碼管理器。便於與代碼托管庫交互。開源環境下使用git也是最好的。下篇將代碼托管地址貼出來。
下面再聊聊為什么要做通用SDK呢,因為之前一直在做API接口相關的工作,各大平台的API接口調用規則各不相同,而且現在的產品一般也不光與一家公司做接口API對接,所以通用SDK很有必要。
通用API接口SDK前期先把框架搭建起來。做成包含封裝、擴展以及多態的軟件項目。同時容易上手與使用,最主要的還是要容易上手與使用。對於剛接觸的人來說尤其重要,他們希望很快搞定接口調用相關的工作,比如說微信公眾平台獲取用戶信息,他們不希望找很久才知道怎么使用。
之前看過像淘寶開放平台,微信公眾平台、百度,餓了么等各大平台的SDK,對於SDK涉及到的模塊大致有一個了解。首先是為了封裝參數,安全簽名,獲取響應,少數SDK還有消息服務。
涉及到的代碼模塊主要有日志、對象的格式轉換Json與XML。請求參數與響應參數的封裝,接口調用,還包括像錯誤碼,異常處理,簽名等安全方面的請求,API接口地址與名稱。
最后還有就是使用C#作為開發語言。看了很多平台都沒有提供.NET語言的SDK,說明.NET使用的人確實變少了,但是我一直使用的就是.NET C#語言,其他的語言很少使用。所以望各位見諒。開發環境是使用VS2013還是15要再想想。
SDK設計思想主要還是模仿HTTP協議請求,Restual API接口也是基於HTTP協議的方法直接對資源進行操作,服務器對客戶端請求作出響應,請求包含了安全驗證防篡改相關的請求參數,一般包括AppKey,AppSecret,以及根據請求參數算出來的簽名Signature,還有防重發的時間戳。
主要需要設計的核心接口與類包含請求接口,它是具體請求類的所有基類,封裝請求API名稱與請求參數。響應接口主要封裝響應的狀態碼與狀態描述,主要是裝請求返回響應讓調用者很好的知曉請求狀態,便於定位問題所在,提高調試效率。還有一個主要進行封裝的類包括客戶端調用,它的主要作用是封裝客戶端調用。它接收請求參數,對請求作出響應,響應結果可以使用Json與XML兩種形式返回。
另外公共方法包括像簽名,驗證,還有MD5與SHA1加解密、JSON序列化與反序列化,XML序列化與反序列化等。
這次先寫這么多,主要是前期的構思,希望各位園友提出寶貴的意見,以后如果有需要幫助的話,我也會盡力幫助回饋你們。還是那句話,一起學習,一起進步。