什么是API

一、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ò)——

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,741評(píng)論 25 709
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 今天突然發(fā)現(xiàn)了API這個(gè)專有名詞,因?yàn)椴皇呛苁煜?,所以就查詢了一下。在這里也記錄一下,方便大家。 API的英文全稱...
    啊哈嗯哼閱讀 716評(píng)論 0 1
  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,579評(píng)論 30 472
  • 先詞后曲
    Charging99閱讀 184評(píng)論 0 0

友情鏈接更多精彩內(nèi)容