?
API,即應(yīng)用程序接口(Application Programming Interface),它搭建起了程序間交流的橋梁,讓不同應(yīng)用程序能夠順暢地互相調(diào)用、共享數(shù)據(jù)。有了API,開發(fā)者就能更便捷地運用其他開發(fā)者編寫的軟件功能,大大提升開發(fā)效率。
API的實現(xiàn)技術(shù)多種多樣,常見的有Web API、SOAP API、REST API等。Web API通?;贖TTP/HTTPS協(xié)議,通過URL就能輕松訪問和調(diào)用;SOAP API是基于XML的Web服務(wù)協(xié)議,借助SOAP消息進行通信;而REST API作為基于HTTP協(xié)議的輕量級Web服務(wù)協(xié)議,無需SOAP消息,僅用簡單的HTTP方法就能傳遞數(shù)據(jù)。
有關(guān)API的數(shù)據(jù)
近年來,API的使用量呈現(xiàn)出爆發(fā)式增長。自2007年起,其使用量已激增13倍。像Google、Facebook和Twitter這類知名應(yīng)用,每天因API被調(diào)用的次數(shù)高達約50 - 100億次。再看Netflix,它持續(xù)借助API向200臺設(shè)備傳輸數(shù)據(jù)流,為用戶帶來流暢的觀看體驗。
API的調(diào)用流程
當我們使用應(yīng)用程序的某項功能時,后臺其實在進行著一系列操作:首先,數(shù)據(jù)請求被發(fā)送至服務(wù)器;服務(wù)器對請求進行解析,弄清楚請求意圖;接著,服務(wù)器給出必要響應(yīng);最后,響應(yīng)成功返回設(shè)備。每次我們要求應(yīng)用程序提供特定服務(wù)響應(yīng)時,這個過程都會重復(fù)上演。
不同的API協(xié)議和架構(gòu)
- REST:在眾多API架構(gòu)中,表述性狀態(tài)轉(zhuǎn)移(Representational State Transfer)備受青睞。REST API以客戶機與服務(wù)器的方式,將前端與后端清晰區(qū)分,且不存儲任何數(shù)據(jù)或狀態(tài)。
- SOAP:簡單對象訪問協(xié)議(Simple Object Access Protocol)在通過XML創(chuàng)建Web API的場景中應(yīng)用廣泛。它能兼容HTTP、TCP和SMTP等常見互聯(lián)網(wǎng)通信協(xié)議,易于擴展,方便開發(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ā)人員可按需選擇。
- 伙伴API:此類API的數(shù)據(jù)訪問權(quán)限僅限于擁有官方許可證的授權(quán)客戶端,即只有與提供API的公司有業(yè)務(wù)關(guān)系的調(diào)用方才能使用。開發(fā)方對資源訪問者有較大控制權(quán)?;锇锳PI的優(yōu)勢顯著,業(yè)務(wù)方可專注于公司核心與發(fā)展,無需遷就開發(fā)人員。若一個開發(fā)人員遇到難題,其他開發(fā)人員可輕松解決。保留伙伴API政策有助于集成大量電商軟件的不同解決方案,使軟件在瞬息萬變的行業(yè)中保持領(lǐng)先。
- 公共API:顧名思義,公共API可供任何外部開發(fā)人員或企業(yè)使用。對于與公眾和其他業(yè)務(wù)組織共享應(yīng)用和數(shù)據(jù)的業(yè)務(wù)結(jié)構(gòu)而言,公共API是理想之選。它不僅容易實現(xiàn),還能保證用戶只要有互聯(lián)網(wǎng)連接,就能隨時隨地使用應(yīng)用服務(wù)。
- 內(nèi)部API:內(nèi)部或私有API通常僅限企業(yè)在其業(yè)務(wù)內(nèi)部連接和訪問數(shù)據(jù)。不過,其安全性和身份驗證能力相對較弱,容易導(dǎo)致數(shù)據(jù)安全威脅,開發(fā)者需逐步加強安全部署。內(nèi)部API能將業(yè)務(wù)的不同部分連接起來,提高開發(fā)過程的適應(yīng)性和靈活性,讓開發(fā)人員在較短時間內(nèi)制定和構(gòu)建新的關(guān)聯(lián)應(yīng)用。
- 復(fù)合API:復(fù)合API通常是兩到多種API的混合體,集各類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)用程序啟用與Web服務(wù)器通信并執(zhí)行相應(yīng)任務(wù)。具體來說,每當用戶指示軟件執(zhí)行任務(wù)或請求信息時,API就充當應(yīng)用程序和Web服務(wù)器之間的“橋梁”。像我們?nèi)粘I钪惺褂玫腇acebook登錄、PayPal支付、Google天氣查詢等,都是API的典型應(yīng)用。
API開發(fā)的工具
API旨在簡化和加速軟件開發(fā),正所謂“工欲善其事,必先利其器”,下面介紹三種常見的API開發(fā)工具:
- Sandbox:作為一種簡單的模擬RESTful API,它能有效降低測試過程中第三方API調(diào)用的成本。
- Apigee:由Google推出的Apigee是構(gòu)建應(yīng)用連接的理想工具,可促進應(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ù)中都得到了廣泛應(yīng)用,為從開發(fā)到業(yè)務(wù)的協(xié)作鋪平了道路。只要我們根據(jù)實際業(yè)務(wù)需求,合理構(gòu)建或修改API,就能填補異構(gòu)數(shù)字技術(shù)之間的鴻溝,提高應(yīng)用服務(wù)的調(diào)用效率,為業(yè)務(wù)帶來更豐厚的利潤,歡迎各位大佬交流互動 小編必回
?