首頁(yè) > 新聞 > IT與互聯(lián)網(wǎng) >

API:互聯(lián)網(wǎng)是如何在幕后工作的?

2015-01-26 10:14:07   作者:   來(lái)源:medium   評(píng)論:0  點(diǎn)擊:


  我們每天都通過(guò)使用筆記本和移動(dòng)電話與朋友、家人以及同事溝通,那么程序之間是如何相互溝通的呢?

  API是我們這個(gè)現(xiàn)實(shí)生活中隱藏的“骨干”——讓軟件程序互相通信。而今天“API經(jīng)濟(jì)”正在迅速的改變世界的交互方式,照片分享、網(wǎng)上購(gòu)物……越來(lái)越多的事物都通過(guò)API進(jìn)行碰撞。因?yàn)锳PI,技術(shù)創(chuàng)新正以比以往更快的速度發(fā)生。如果你會(huì)編寫(xiě)軟件,那么你或許已經(jīng)熟悉API,那么其余的呢?API的精確意義是什么?為什么它如此重要?

  API:軟件的支柱

  在最基本的層面上,一個(gè)API是一組決定一個(gè)程序如何與另一個(gè)通信的規(guī)則。在你使用PC的時(shí)候,API讓數(shù)據(jù)在不同應(yīng)用之間傳輸成為可能,如從一個(gè)電子郵件中復(fù)制一個(gè)鏈接到Word文檔中。

  在Web上,你可以把API想象為一個(gè)電話系統(tǒng):當(dāng)一個(gè)應(yīng)用想從另一個(gè)應(yīng)用那里獲取信息時(shí),它會(huì)“調(diào)用”另一個(gè)應(yīng)用的API。舉個(gè)例子來(lái)說(shuō),如果你想建立一個(gè)應(yīng)用為用戶顯現(xiàn)最近的、用戶朋友最喜歡的餐廳,你可以使用Yelp API獲取餐廳數(shù)據(jù)(Yelp是美國(guó)點(diǎn)評(píng)網(wǎng)站)以及 Facebook API獲取用戶朋友喜歡的數(shù)據(jù)。當(dāng)用戶打開(kāi)應(yīng)用時(shí),應(yīng)用的內(nèi)部代碼將調(diào)用Yelp和Facebook的API來(lái)獲取所需的數(shù)據(jù)。

  圖1:用戶訪問(wèn)一個(gè)網(wǎng)站,該網(wǎng)站調(diào)用Facebook API來(lái)獲取數(shù)據(jù)

  在Web API的世界里,諸如Facebook、Google Map、Foursquare等大的服務(wù)器允許較小的應(yīng)用“捎帶”它們的數(shù)據(jù)。例如,許多的應(yīng)用允許用戶使用Facebook登錄,而這就是通過(guò)Facebook API觸發(fā)的。

  API以一種可控的方式向外界陳列一塊軟件內(nèi)部數(shù)據(jù)和功能,允許一個(gè)應(yīng)用共享數(shù)據(jù)以及“代表”其他應(yīng)用的執(zhí)行行為,而不需要開(kāi)發(fā)者分享他們所有的代碼。在這種規(guī)模上分享代碼將降低效率,此外還會(huì)帶來(lái)重大的安全威脅。API允許這種不分享實(shí)際代碼的集成。包括開(kāi)源軟件在內(nèi),API都是有用處的,因?yàn)榇蠖鄶?shù)開(kāi)發(fā)者沒(méi)有時(shí)間和耐心去為使用某一塊功能而瀏覽成千上萬(wàn)行代碼。相反,該功能只需通過(guò)一個(gè)API就可以被使用。

  如果沒(méi)有API,很難想象應(yīng)用之間如何連通。API允許應(yīng)用相互交談,因此更具創(chuàng)新性和一致性的應(yīng)用被創(chuàng)建。試想一下,如果Google Map沒(méi)有提供一個(gè)API,那么在該互聯(lián)網(wǎng)上相關(guān)的每一個(gè)移動(dòng)應(yīng)用和網(wǎng)站必須重新實(shí)施其地圖系統(tǒng),這是一個(gè)非常艱巨的任務(wù)。對(duì)于一個(gè)公司而言內(nèi)部的API對(duì)增加公司共享資源也是非常有用的,例如一個(gè)維基百科的軟件開(kāi)發(fā)者可以創(chuàng)建一個(gè)API以支持所有終端用戶(包括網(wǎng)站、iOS、Android和黑莓應(yīng)用)使用的維基百科應(yīng)用,以避免這些應(yīng)用重復(fù)的復(fù)制代碼,它們可以通過(guò)一個(gè)API共享數(shù)據(jù)。API通過(guò)限制外部訪問(wèn)特定子集(通常是數(shù)據(jù)交換的功能)簡(jiǎn)化了軟件開(kāi)發(fā)的復(fù)雜性。正因?yàn)槿绱,如今很多新的軟件開(kāi)發(fā)周期可以是幾周,而不是以往的幾個(gè)月或幾年。

  API為何如此重要?

  在現(xiàn)代社會(huì)中,API是非常重要的,因?yàn)樗麄兘忉屃碎_(kāi)發(fā)者是如何構(gòu)建一個(gè)可以“插入”大服務(wù)(如Twitter和Facebook這樣的社交網(wǎng)絡(luò)或像Dropbox、AccuWeather這樣的公用事業(yè))的應(yīng)用。一個(gè)手機(jī)游戲,如FlappyBird,可以使用Dropbox讓玩家在Dropbox云中存儲(chǔ)他們的游戲和設(shè)置參數(shù),而不需要其本身構(gòu)建一個(gè)云存儲(chǔ)系統(tǒng);一個(gè)開(kāi)發(fā)者可以搭載Uber API設(shè)計(jì)一個(gè)提供打車(chē)服務(wù)的地圖應(yīng)用。API可以在很大程度上節(jié)省開(kāi)發(fā)者和用戶的時(shí)間。用戶這塊怎么說(shuō)呢?試想一下,如果Facebook不提供API的話,用戶就必須為每個(gè)應(yīng)用創(chuàng)建一個(gè)單獨(dú)的用戶名和密碼,而不能簡(jiǎn)單的點(diǎn)擊“通過(guò)Facebook登錄”。

  API實(shí)現(xiàn)了現(xiàn)代Web的良好體驗(yàn)。開(kāi)發(fā)者可以挖掘和選取API創(chuàng)造全新的體驗(yàn)。從Google到Twitter再到Facebook……,開(kāi)發(fā)者有數(shù)千個(gè)API選擇。一個(gè)常見(jiàn)的API應(yīng)用例子是“共享”圖標(biāo),你可以在網(wǎng)站文章、視頻等地方發(fā)現(xiàn)它的身影。當(dāng)你點(diǎn)擊這些分享鏈接的時(shí)候,意味著一個(gè)API在被調(diào)用。另一個(gè)常見(jiàn)的API應(yīng)用是網(wǎng)站下面的評(píng)論系統(tǒng),如果們所知道的Disqus,它允許用戶無(wú)需網(wǎng)站所有者做任何額外操作的前提下發(fā)布和查看評(píng)論。說(shuō)到這里,你可能已經(jīng)注意到了,API是非常普遍的,它加速了創(chuàng)新的步伐,它讓每一個(gè)新的開(kāi)發(fā)者在不重新“發(fā)明輪子”下就可以創(chuàng)建功能。

  API的商業(yè)模式

  正如推斷的那樣,API經(jīng)常被公司用來(lái)獲取利益。圖3顯示了四個(gè)通用的API商業(yè)模式,公司通過(guò)這些模式讓API向業(yè)務(wù)目標(biāo)邁進(jìn)了一步。圖中所標(biāo)注的“Developer”在這里特指利用API的軟件件開(kāi)發(fā)人員。

  Free:顧名思義,公司或組織不花一分錢(qián)就可以獲取該API。對(duì)于免費(fèi)共享API的公司(如Google和Facebook)而言,這一舉措可能讓公司獲得更多的用戶,其原因是開(kāi)發(fā)者使用該API起到很大的傳播作用,又或者僅僅是因?yàn)锳PI的免費(fèi)和開(kāi)源。

  Developer Pays:在開(kāi)發(fā)者付費(fèi)模式中,API或通過(guò)它的數(shù)據(jù)對(duì)開(kāi)發(fā)者而言是有價(jià)值的,他們?cè)敢鉃樵L問(wèn)支付費(fèi)用,例如PayPal,通過(guò)payments API讓網(wǎng)上支付變得更簡(jiǎn)單,不過(guò)需要付費(fèi)才能訪問(wèn)該API。

  Developer Gets Paid:開(kāi)發(fā)者獲得報(bào)酬模式,一個(gè)公司可能會(huì)支付給開(kāi)發(fā)者一定的酬勞以讓其使用公司的API。這種情況常見(jiàn)于聯(lián)署方案或收益分享方案中,如開(kāi)發(fā)者使用亞馬遜的API,當(dāng)用戶是由該開(kāi)發(fā)者“引導(dǎo)”進(jìn)入亞馬遜時(shí),開(kāi)發(fā)者會(huì)獲得相應(yīng)的酬勞。

  Indirect:間接模型覆蓋了其他公司可能從API獲利的方式。例如,為企業(yè)提供軟件來(lái)管理他們銷(xiāo)售周期的Salesforce公司可以通過(guò)更昂貴的合同來(lái)向其業(yè)務(wù)客戶銷(xiāo)售它的API。

  一個(gè)API就是一個(gè)承諾

  目前API存在的主要問(wèn)題是它們不一定是永久性的。因?yàn),今天一個(gè)公司提供一個(gè)API并不能意味著你明天還能夠使用。例如,Twitter在2012年底限制了第三方訪問(wèn)其API,而這樣做的后果是所有涉及該API的客戶端全部遇難,這也迫使用戶不得不使用Twitter官方應(yīng)用和網(wǎng)站,用戶也不得不忍受Twitter隨心所欲向用戶顯示的廣告;蛟S它會(huì)借口稱這么做是為了更具凝聚力的用戶體驗(yàn),但是對(duì)于許多依賴Twitter API的開(kāi)發(fā)者來(lái)說(shuō),這意味著,他們這部分業(yè)務(wù)的終結(jié)。

  類(lèi)似的例子是常見(jiàn)的,那些提供API的初創(chuàng)公司常有遭遇關(guān)閉或收購(gòu)的命運(yùn)。由于Web API仍處于初級(jí)階段,還有很多東西要學(xué),所以API提供者應(yīng)該清楚這樣一件事:一個(gè)API就是一個(gè)承諾,一旦其他人很依賴它,那么維持它并保持活躍就顯得至關(guān)重要了。

  最后

  幸運(yùn)的是,在大多數(shù)情況下,API是鼓勵(lì)創(chuàng)新的。沒(méi)有API,應(yīng)用之間的通信將會(huì)被扼殺;軟件開(kāi)發(fā)者將不斷重寫(xiě)并執(zhí)行相同功能的軟件;創(chuàng)新的腳步將會(huì)放緩。人們?nèi)粘5姆窒、評(píng)論等將蕩然無(wú)存。所以我們離不開(kāi)API,隨著世界越來(lái)越深入到技術(shù)革命,API將在我們每天使用的應(yīng)用和網(wǎng)站中扮演更大的角色。

分享到: 收藏

專題