API:概念:API(Application Programming Interface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內(nèi)部工作機制的細節(jié)。
SDK:概念:軟件開發(fā)工具包(外語首字母縮寫:SDK、外語全稱:Software Development Kit)一般都是一些軟件工程師為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件時的開發(fā)工具的集合。
通俗地說,api可以比作房門鑰匙。在一個房子里,每間房間有其不同的用途與資源。而當要獲取到相應(yīng)房間的資源時,我們需要先用鑰匙打開房門。比如我們要從書房里拿書、要去臥室拿枕頭,我們都需要先找到相應(yīng)房間鑰匙,繼而進入房間拿書、拿枕頭。調(diào)用api的過程,就是用鑰匙開門的過程。
而sdk則是把這些鑰匙串在一塊兒,將api集成在一塊兒。擁有sdk,你便可以在該房子里暢通無阻,想要獲得哪個房間里的資源,用手中的鑰匙打開房門,進去拿取即可。
兩者區(qū)別:API是一個確定的功能,已經(jīng)明確了它的作用(比如做加法)。而SDK就像是很多方法的集合體,是一個工具。比如你要做加法,你就調(diào)用計算機SDK的加法API實現(xiàn),要做減法就調(diào)用減法API實現(xiàn),無論你想完成什么計算,SDK里總有能實現(xiàn)的方法。
再舉個例子,比如你要開車去一個地方,車就是SDK,可以讓你完成到達目的地的目的。車上的方向盤,燈,發(fā)動機,油門,剎車像一個個API實現(xiàn),你在使用SDK時,就是調(diào)用一個個API功能。如果貼心一點的車,可能還帶有使用說明(SDK說明文檔)。 Api又分為open api和私有api。Open api 顧名思義,即是向所有人公開的接口,允許任何人調(diào)用它并獲取到它背后的數(shù)據(jù)。它就好比于圖書館,你只需要進行相應(yīng)的身份認證,就可以進入里面獲取到相應(yīng)的圖書及資源,而身份認證便是你獲取資源的鑰匙。 現(xiàn)在很多公司都開放自己的open api,并為了用戶調(diào)用方便,他們大多采用sdk文檔方式打包。用戶在調(diào)用時只需要下載該sdk文檔,根據(jù)相應(yīng)規(guī)范進行調(diào)用即可。這樣就省去了重寫函數(shù)去封裝http、https等請求的工作,節(jié)省更多時間去做更有價值的事情。如:
使用App登錄的時候可以選用微信、微博、QQ等第三方進行登錄,這實際上就是你的App接入了第三方的登錄sdk;
App里面支持將內(nèi)容分享到微信、微博、QQ空間等第三方平臺,這實際上就是你的App接入了第三方的分享sdk;
電商類App里面支持微信、支付寶、百度錢包等支付方式,這實際上就是你的App接入了第三方的支付sdk;
……
另外,現(xiàn)在也有些公司作為產(chǎn)品出售。如百度的ai市場,有語音識別、語音合成、人臉識別、美顏sdk等出售,研發(fā)使用現(xiàn)成的sdk,節(jié)省了研發(fā)時間。
在這一過程中,簡道云扮演的角色就是SDK,而簡道云配備API接口,可以對接外部系統(tǒng),讓橋科院不用開發(fā)直接實現(xiàn)了數(shù)據(jù)自動上傳、備份的功能。
最后,貼近生活講講兩者的關(guān)系:
有一杯密封飲料,它的名字叫做“SDK”。
飲料上插著吸管,吸管的名字叫“API”。
把你叫做“XX系統(tǒng)”。
如果你想喝到SDK里的飲料(讓系統(tǒng)擁有SDK中的功能),你必須通過API這根吸管來實現(xiàn)(通過API連接你的系統(tǒng)和SDK工具包),否則你就喝不到飲料。
所以:
SDK=放著你想要的軟件功能的軟件包
API=SDK上唯一的接口