一、API(Application Programming?Interface,應(yīng)用程序編程接口)
1、API是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開(kāi)發(fā)人員基于某軟件或硬件得以訪問(wèn)一組例程的能力,而又無(wú)需訪問(wèn)源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。
2、簡(jiǎn)單理解,一個(gè)API就是一個(gè)函數(shù),這個(gè)函數(shù)提供了某一樣特殊的能力,比如一個(gè)API是用來(lái)吐出某一個(gè)地理坐標(biāo)下天氣的能力。API也常被成為API函數(shù),可以理解為一個(gè)接口,接口是一個(gè)內(nèi)聚系統(tǒng)暴漏給外部的一切信息,包含但不限于:
a)調(diào)用方式:比如通過(guò)lib庫(kù)或者h(yuǎn)ttp接口等。
b)調(diào)用約定:比如lib的函數(shù)簽名或者HTTP的參數(shù),http method或者頭信息,長(zhǎng)短鏈接等等。
c)依賴關(guān)系:比如接口的調(diào)用需要涉及到第三方或者其他的準(zhǔn)備工作等等。
3、在應(yīng)用開(kāi)發(fā)中,系統(tǒng)暴露的能力是以SDK的形式發(fā)行交給開(kāi)發(fā)者的,所以SDK中一般封裝了很多API,這些API就對(duì)應(yīng)著系統(tǒng)或平臺(tái)的能力。
二、公有與私有API
1、API又分為「公有API」和「私有API」。
2、公有API是系統(tǒng)以SDK形式暴露出來(lái),對(duì)所有開(kāi)發(fā)者可見(jiàn)。公有API隨便用,都是系統(tǒng)授權(quán)的。
3、私有API一般是系統(tǒng)內(nèi)部使用或者僅限于系統(tǒng)自帶的一些應(yīng)用程序使用,不允許應(yīng)用程序開(kāi)發(fā)者使用的,這種一般對(duì)應(yīng)于一些敏感的能力,比如認(rèn)為此API可能被濫用,造成用戶體驗(yàn)下降或此API對(duì)其他應(yīng)用程序可能是危險(xiǎn)的。私有API謹(jǐn)慎使用,系統(tǒng)未來(lái)可能會(huì)不再支持或觸犯廠商規(guī)則。
三、API分類
1、操作系統(tǒng)API:
以Android 系統(tǒng)為例,當(dāng)工程師寫一個(gè) Android APP時(shí),需要使用手機(jī)拍照功能采集用戶頭像,工程師如何讓手機(jī)自動(dòng)打開(kāi)拍照界面并獲取拍照的圖片呢?控制手機(jī)攝像頭,看起來(lái)是個(gè)很復(fù)雜的操作,實(shí)際上只需調(diào)用一句核心代碼即可實(shí)現(xiàn):Camera.takePicture()。調(diào)用該函數(shù)后,手機(jī)便會(huì)打開(kāi)相機(jī),按下快門后程序自動(dòng)獲取拍照后的圖片。而上面的這個(gè)拍照函數(shù),就是Android 系統(tǒng)提供的 API。
對(duì)應(yīng)的,諸如獲取GPS坐標(biāo)、向服務(wù)器發(fā)送請(qǐng)求、連接藍(lán)牙、顯示圖片、視頻等操作,都是由這種一個(gè)個(gè)函數(shù)操作實(shí)現(xiàn)的。工程師不需要關(guān)心硬件是如何調(diào)用的、只需按照規(guī)范,調(diào)用 Android的 API 即可。
2、庫(kù)與框架的API:
移動(dòng)端APP 經(jīng)常需要用到一些第三方的服務(wù),比如需要統(tǒng)計(jì) APP使用情況時(shí),會(huì)用到友盟統(tǒng)計(jì)、TalkingData,需要實(shí)現(xiàn)一鍵分享到多個(gè)社交媒體時(shí),會(huì)用到 ShareSDK。使用這類第三方服務(wù)之前,需要在 APP中嵌入對(duì)應(yīng)的代碼庫(kù),然后再調(diào)用他們開(kāi)放的 API,比如要在按鈕上加監(jiān)測(cè),觸發(fā)下面的代碼即可:MobclickAgent.onEvent(Context?context, String eventId);
這里的API也指具體的函數(shù),觸發(fā)該函數(shù)后友盟會(huì)自動(dòng)收集事件信息,并將監(jiān)測(cè)數(shù)據(jù)發(fā)送到服務(wù)器,開(kāi)發(fā) app 的工程師則不需關(guān)心這些細(xì)節(jié)。
3、Web API:
Web API 不是一個(gè)具體的編程語(yǔ)言函數(shù),而是一個(gè)http請(qǐng)求。比如,一個(gè)第三方APP需要獲取用戶微博信息,可以發(fā)起如下的 http 請(qǐng)求獲?。篽ttps://api.weibo.com/2/users/show.json,通過(guò)下面的請(qǐng)求獲取用戶粉絲列表:https://api.weibo.com/2/friendships/followers.json。當(dāng)然,獲取這些信息的前提是需要用戶授權(quán),涉及到參數(shù)傳遞以及權(quán)限認(rèn)證。
除了微博你能想到的服務(wù)大多數(shù)都有開(kāi)放API,諸如圖像識(shí)別、語(yǔ)音合成、車票查詢、天氣查詢,只需一個(gè)http請(qǐng)求的調(diào)用,即可完成你想要的任務(wù)。百度API Store:http://apistore.baidu.com/
——部分內(nèi)容整理自網(wǎng)絡(luò)——