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