?譯者 | 陳峻
審校 | 孫淑娟
API是應(yīng)用程序編程接口(Application Programming Interface)的縮寫,能夠起到兩個軟件組件之間的連接器或中介的作用。此類接口往往通過一組明確的協(xié)議,來表示各種原始的請求和響應(yīng)。API文檔可以向開發(fā)人員展示請求和響應(yīng)是如何形成的。簡單而言,API能夠允許兩個應(yīng)用程序彼此之間實現(xiàn)通信。無論我們在手機上查看天氣,還是使用微信,或者在Facebook等應(yīng)用上收發(fā)消息,都會頻繁地使用到API。
有關(guān)API的數(shù)據(jù)
- 自2007年以來,API的使用量已增加了13倍
- 得益于API,Google、Facebook和Twitter等知名應(yīng)用,每天都會被調(diào)用約50-100億次
- Netflix持續(xù)使用API向200臺設(shè)備傳輸數(shù)據(jù)流
API的調(diào)用流程
當我們在使用應(yīng)用程序的某項功能時,通常會在后臺發(fā)生如下情況:
- 數(shù)據(jù)請求被發(fā)送到服務(wù)器上
- 服務(wù)器對其進行解析,并理解其請求的含義
- 服務(wù)器提供必要的響應(yīng)
- 響應(yīng)被成功地發(fā)送回設(shè)備
其實,每次在我們要求應(yīng)用程序提供某些特定的服務(wù)響應(yīng)時,這樣的過程都會重復(fù)循環(huán)一次。
不同的API協(xié)議和架構(gòu)
- REST:在眾多的API架構(gòu)類型中,表述性狀態(tài)轉(zhuǎn)移(Representational State Transfer)往往被廣為采用。REST API的工作原理是以客戶機與服務(wù)器的方式,將API的前端與后端區(qū)分開來。而且它不會存儲任何數(shù)據(jù)或狀態(tài)。
- SOAP:簡單對象訪問協(xié)議(Simple Object Access Protocol)也被廣泛用于通過XML創(chuàng)建Web API的場景中。它能夠兼容諸如:HTTP、TCP和SMTP等互聯(lián)網(wǎng)常見的通信協(xié)議。由于SOAP易于被擴展,因此開發(fā)者能夠很容易地用它來編寫和添加新的功能。與其他架構(gòu)相比,SOAP具有高度結(jié)構(gòu)化、嚴格可控性、以及具有被明確定義的標準等特性。
- RPC:遠程過程調(diào)用(remote procedural call)能夠被用來調(diào)用各種可執(zhí)行的操作。它非常適合于發(fā)送各種參數(shù),以及接收各種相應(yīng)的響應(yīng)。
API的類型
根據(jù)訪問級別和使用范圍的不同,API往往可以被分為如下不同的類型。開發(fā)人員可以根據(jù)自己的要求,進行適當?shù)剡x擇。
A、伙伴API
在此類API中,對于數(shù)據(jù)的訪問,僅限于那些擁有官方許可證的授權(quán)客戶端。也就是說,只有那些與提供API的公司有業(yè)務(wù)關(guān)系的調(diào)用方,才能使用此類API。開發(fā)方對于誰可以訪問這些資源,有著較大的控制權(quán)。
伙伴API的優(yōu)勢:
- 業(yè)務(wù)方可以把更多的注意力放在公司的核心與發(fā)展上,而無需遷就開發(fā)人員。如果一個開發(fā)人員覺得某個問題難以被解決,則可以由另一個開發(fā)人員去輕松地搞定。這便是伙伴合作給項目帶來的好處。
- 保留伙伴API政策將有助于集成大量電商軟件的不同解決方案,并使得軟件能夠在瞬息萬變的行業(yè)中保持最新和強相關(guān)。
B、公共API
顧名思義,公共API可供任何外部開發(fā)人員或企業(yè)使用。對于那些與公眾和其他業(yè)務(wù)組織共享應(yīng)用和數(shù)據(jù)的業(yè)務(wù)結(jié)構(gòu)來說,Public API是理想的選擇。
公共API的優(yōu)勢:
公共API不但容易實現(xiàn),而且能夠保證用戶只要有互聯(lián)網(wǎng)連接,就能隨時隨地使用應(yīng)用服務(wù)。
C、內(nèi)部API
內(nèi)部或私有API往往只能讓企業(yè)在其業(yè)務(wù)內(nèi)部連接和訪問數(shù)據(jù)。由于內(nèi)部API的安全性和身份驗證能力相對較弱,因此容易導(dǎo)致數(shù)據(jù)受到安全威脅。對此,開發(fā)者需要逐漸改變它們在安全上的各種部署與安排。
內(nèi)部API的優(yōu)勢:
由于內(nèi)部API能夠?qū)I(yè)務(wù)的不同部分連接起來,以提高開發(fā)過程中的適應(yīng)性和靈活性,因此此類API可以讓開發(fā)人員在較短的時間內(nèi),制定和構(gòu)建新的關(guān)聯(lián)應(yīng)用。
D、復(fù)合API
復(fù)合API通常是兩到多種API的混合體。由于集成了各類API的長處,因此它往往能夠帶來更高的速度、更大的靈活性、以及更好的性能。
復(fù)合API的優(yōu)勢:
復(fù)合API能夠在單個調(diào)出(callout)中執(zhí)行多項操作。而且其所需的數(shù)據(jù)位于調(diào)用序列的末端,而無需解析各種響應(yīng)。因此,它比其他API更受歡迎。
API的工作原理
每個API都是由函數(shù)的調(diào)用來實現(xiàn)的。而函數(shù)調(diào)用的任務(wù)主要是請求軟件去執(zhí)行某些特定的操作和函數(shù)。當用戶啟動API的調(diào)用時,它會通知應(yīng)用程序去啟用API與Web服務(wù)器通信,并執(zhí)行相應(yīng)的任務(wù)。具體而言,每當用戶指示軟件去執(zhí)行某些任務(wù)、或請求某種信息時,API會以應(yīng)用程序和Web服務(wù)器之間的“橋梁”身份去實現(xiàn)。正如前文所說,我們在日常生活中使用到的,諸如:Facebook登錄、PayPal支付、以及Google天氣查詢等,都是API的典型示例。您可以通過鏈接-- https://nordicapis.com/5-examples-of-apis-we-use-in-our-everyday-lives/,了解其更多的應(yīng)用場景。
API開發(fā)的工具
既然API的任務(wù)是簡化和加速軟件的開發(fā),那么正所謂“工欲善其事,必先利其器”,讓我們來看看三種常見的API開發(fā)工具:
- Sandbox:作為一種簡單的模擬RESTful API,它主要能夠降低測試過程中第三方API調(diào)用的成本。
- Apigee:作為構(gòu)建應(yīng)用連接的理想工具,由Google推出的Apigee可以促進應(yīng)用程序和服務(wù)之間的數(shù)據(jù)傳輸。
- APIMatic:對于網(wǎng)站的各種API而言,APIMatic以平臺的形式,方便開發(fā)人員更加靈活地維護API的各種更新。同時,它也允許開發(fā)人員將API描述并轉(zhuǎn)換成諸如:WADL、Swagger、RAML、OAI格式、IO文檔、API藍圖、har1.4、以及Postman集合等多種形式。
API的構(gòu)建實踐
API的構(gòu)建實踐,主要體現(xiàn)在如下五個方面:
- 安全性:使用基于令牌的身份驗證,是構(gòu)建安全可靠的API的良好實踐。它既保證了安全性,又兼顧了用戶友好性。
- 文件:精心編撰的API文檔不但能夠降低項目的開發(fā)成本,而且可以提高應(yīng)用的運行效率和實現(xiàn)時間。應(yīng)用程序開發(fā)人員往往需要通過豐富的API支持文檔,來詳細地了解整個調(diào)用與實現(xiàn)過程。
- 節(jié)流:當涉及到需要重定向流量的溢出、防止DoS(拒絕服務(wù))、以及備份各種API時,我們往往需要通過應(yīng)用的節(jié)流,來有效地實現(xiàn)此類目的。
- SDK和代碼庫:通過向開發(fā)團隊提供必要的庫資源,我們可以加速開發(fā)的進程。
- 重寫HTTP方法:由于一些代理只能支持POST和GET方法,因此我們使用定制的HTTP報頭X-HTTP-Method-Override,能夠允許RESTful API去重寫HTTP的方法。
小結(jié)
從Node.js到PHP與ASP.Net的Web開發(fā),無論是簡單的Python開發(fā)、還是復(fù)雜的Java軟件,API在每一項技術(shù)中都得到了廣泛的使用,都能夠為從開發(fā)到業(yè)務(wù)的協(xié)作鋪平道路。只要我們能夠根據(jù)自己的實際業(yè)務(wù)需求,合理地構(gòu)建或修改API,就能夠填補異構(gòu)數(shù)字技術(shù)之間的鴻溝,提高應(yīng)用服務(wù)的調(diào)用效率,進而為業(yè)務(wù)帶來更豐厚的利潤。
譯者介紹
陳峻 (Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項目實施經(jīng)驗,善于對內(nèi)外部資源與風險實施管控,專注傳播網(wǎng)絡(luò)與信息安全知識與經(jīng)驗。
原文標題:??Everything You Should Know About APIs???,作者:Himanshu Mehra?