?API做為每個重要信息技術(shù)趨勢的核心內(nèi)容懊缺,移動設(shè)計(jì)、云計(jì)算铁坎、物聯(lián)網(wǎng)往核、大數(shù)據(jù)及社交網(wǎng)絡(luò)等應(yīng)用都依賴于一個基于web的界面與它們的分布式組件進(jìn)行連接箫爷,為全球范圍內(nèi)的各個商業(yè)領(lǐng)域提供具有創(chuàng)新性和顛覆性的解決方法。而API的使用既是催化劑聂儒,也是促成成果的主要力量虎锚。
什么是API??
應(yīng)用程序接口(英文:Application Programming
Interface衩婚,縮寫API)窜护,就是接口,也是通道非春,負(fù)責(zé)一個程序和其他軟件的溝通柱徙,本質(zhì)是預(yù)先定義的函數(shù)。
舉個簡單的栗子奇昙,假設(shè)物流中“貨物”是數(shù)據(jù)护侮,存放貨物的“總倉庫”是數(shù)據(jù)庫,“店鋪”是我們的網(wǎng)站储耐、App羊初。頁面上顯示的內(nèi)容、數(shù)字什湘,以及用戶的操作請求和結(jié)果都是需要不停搬運(yùn)的“貨物”數(shù)據(jù)长赞,則負(fù)責(zé)調(diào)配分配打包的中轉(zhuǎn)站就是API晦攒,店鋪小哥直接從中轉(zhuǎn)站取貨就好。
對于軟件提供商來說得哆,開放API勤家,讓別的應(yīng)用程序來調(diào)用,形成生態(tài)柳恐,軟件才能發(fā)揮最大的價值,才能更有生命力热幔。
對于應(yīng)用開發(fā)者來說乐设,有了開放的API,就可以直接調(diào)用多家公司做好的功能來做自己的應(yīng)用绎巨,不需要所有的事情都自己操刀近尚,節(jié)省精力。
API就是技術(shù)服務(wù)商為客戶提供服務(wù)的方法场勤。
作為一名程序員戈锻,如果沒跟API打過交道同樣是件不可思議的事情。
當(dāng)然我們在互聯(lián)網(wǎng)時代所說的狹義的API概念可能與桌面軟件時代廣義的API有所不同和媳。在維基百科中是這么定義的:API就是軟件系統(tǒng)不同組成部分銜接的約定格遭。由于近年來軟件的規(guī)模日益龐大,常常需要把復(fù)雜的系統(tǒng)劃分成小的組成部分留瞳,編程接口的設(shè)計(jì)十分重要拒迅。程序設(shè)計(jì)的實(shí)踐中,編程接口的設(shè)計(jì)首先要使軟件系統(tǒng)的職責(zé)得到合理劃分她倘。良好的接口設(shè)計(jì)可以降低系統(tǒng)各部分的相互依賴璧微,提高組成單元的內(nèi)聚性,降低組成單元間的耦合程度硬梁,從而提高系統(tǒng)的維護(hù)性和擴(kuò)展性前硫。
API的哲學(xué)意義
生活中,每天的穿衣荧止、吃飯屹电、如廁、睡覺是最基本的訴求罩息。但人類文明發(fā)展至今嗤详,我們穿的衣服、出行搭載的交通工具瓷炮、吃飯的糧食葱色、住的房子等等一切幾乎很少是我們直接參與生產(chǎn)的,在經(jīng)濟(jì)學(xué)中我們稱之為社會分工娘香。分工最大的好處苍狰,就是熟能生巧办龄,讓專業(yè)的人做專業(yè)的事,而需要這些資源的人淋昭,可以拿自己生產(chǎn)的物資間接(貨幣)或直接的交換俐填。
追溯到社會的發(fā)展,從最簡單的采集狩獵時代翔忽,逐漸演變成現(xiàn)在這樣錯綜復(fù)雜的結(jié)構(gòu)英融,在未來它會繼續(xù)的演化產(chǎn)生更細(xì)致的分工。在這個漫長演化過程中歇式,人類的社會文明中逐漸產(chǎn)生了語言驶悟、文字、貨幣材失、契約等這些維系社會結(jié)構(gòu)的基本要素痕鳍;類比信息時代,這些要素就是不同的社會分工群體之間互相調(diào)用的“API”規(guī)范龙巨。
原子笼呆、電子之間的相互作用也好,人類社會的交易合作也好旨别,IT系統(tǒng)之間通訊的API也好诗赌,其哲學(xué)意義的本質(zhì)都是一種契約(規(guī)則),這個所有成員共同維護(hù)的契約讓難以解決的復(fù)雜問題變得簡單秸弛。
API的分類
早期計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用程序有C/S和B/S兩種架構(gòu)模式境肾,這兩種架構(gòu)模式各有優(yōu)缺點(diǎn)。隨著Web技術(shù)越來越成熟胆屿,各種技術(shù)規(guī)范也層出不窮奥喻,后來在大型互聯(lián)網(wǎng)公司中流行起來的開放平臺促成了第三種架構(gòu):OpenAPI。
應(yīng)用程序API
這里主要指的是非Web應(yīng)用程序非迹,它為第三方開發(fā)者提供了可控訪問軟件內(nèi)部功能的接口环鲤。例如:Windows API(https://msdn.microsoft.com/zh-cn/library/windows/desktop/ff818516(v=vs.85).aspx)和Android(https://developer.android.com/guide/index.html),他們通過暴露操作系統(tǒng)核心API憎兽,使應(yīng)用程序在獲得授權(quán)的情況下使用受系統(tǒng)保護(hù)的計(jì)算機(jī)硬件資源(IO設(shè)備冷离、GPS等);瀏覽器同樣為JavaScript準(zhǔn)備了API(https://developer.mozilla.org/zh-CN/docs/Web/API)纯命,從而使HTML西剥、CSS、JavaScript經(jīng)過渲染顯示出各種程序設(shè)定的文字亿汞、圖像及聲音等瞭空。
應(yīng)用程序API通常適用于當(dāng)前設(shè)備內(nèi)的應(yīng)用程序交互。
基于Web的私有API和OpenAPI
和應(yīng)用程序API比起來,RESTful
API咆畏、OpenAPI更被Web程序員所熟知南捂。它們是更高級的API(資源和業(yè)務(wù)屬性更強(qiáng))。根本上它是脫離操作系統(tǒng)的限制旧找,從Web資源的角度定義了API交互的規(guī)則溺健。?
Web服務(wù)端通過RESTful API向客戶端提供數(shù)據(jù)資源的訪問通道,PC瀏覽器钮蛛、iOS鞭缭、安卓等平臺中運(yùn)行的終端APP能夠按照既定的規(guī)則使用服務(wù)器中的數(shù)據(jù),使分布在各處的用戶可以借助不同的設(shè)備連接到服務(wù)中心魏颓,服務(wù)商以此提供娛樂缚去、購物、聊天琼开、內(nèi)容咨詢等。
在私有API中枕荞,還有一種微服務(wù)API柜候,它與微服務(wù)架構(gòu)風(fēng)格息息相關(guān)。但微服務(wù)API一般無法在公網(wǎng)使用的躏精,它使幾個相對簡單的子系統(tǒng)有機(jī)結(jié)合渣刷,形成一個整體并對外提供一個足夠復(fù)雜的服務(wù)。OpenAPI是對外部IT系統(tǒng)提供的一種資源調(diào)用方案矗烛,一般都有嚴(yán)格的鑒權(quán)規(guī)則辅柴,來確保資源被安全的使用。
用一張表格比較不同API的特點(diǎn):
OpenAPI會成為IT系統(tǒng)的標(biāo)準(zhǔn)功能
現(xiàn)在瞭吃,你可以打開百度碌嘀,搜索關(guān)鍵詞“開放平臺”。瀏覽檢索到的結(jié)果歪架,你會發(fā)現(xiàn)幾乎所有耳熟能詳?shù)幕ヂ?lián)網(wǎng)公司都有自己的開放平臺生態(tài)股冗,他們通過OpenAPI讓開發(fā)者可以方便的使用他們的服務(wù),并以此擴(kuò)大自己的影響力和蚪。
一個既成事實(shí)是:沒有API止状,所有的IT系統(tǒng)都會成為數(shù)據(jù)孤島;一個IT系統(tǒng)的OpenAPI被其它IT系統(tǒng)調(diào)用的規(guī)模攒霹,是這個IT系統(tǒng)價值的關(guān)鍵指標(biāo)怯疤。我認(rèn)為,IT系統(tǒng)之間的API經(jīng)歷了3個階段:
以懶豬行( 阿里云API應(yīng)用創(chuàng)新大賽參賽企業(yè))的模式和經(jīng)驗(yàn)為例:懶豬作為旅業(yè)S2B平臺Top1催束,掌握豐富的境外目的地落地資源集峦,為了把這些資源的價值最大化,我們充分借助各大OTA平臺的OpenAPI向分銷商家賦能,讓懶豬的S端資源與國內(nèi)的旅業(yè)生態(tài)無縫接合少梁。同時洛口,在未來懶豬會借助OpenAPI系統(tǒng),讓下單凯沪、訂單處理等過程變得可以程序化第焰,使與合作伙伴業(yè)務(wù)能力的全面對接成為可能。這對業(yè)務(wù)團(tuán)隊(duì)的人效提升是相當(dāng)可觀的妨马,在IT時代我們應(yīng)當(dāng)這么做挺举,像馬克思說的:科技是第一生產(chǎn)力。
阿里云已將其業(yè)務(wù)能力完全API化烘跺,并提供多語言SDK湘纵。它憑借一套OpenAPI,讓開發(fā)者可以通過內(nèi)部編程的方式靈活的部署配置公有云產(chǎn)品滤淳,而且OpenAPI使得調(diào)用云端資源變得比使用自己本地的資源還方便梧喷,IT系統(tǒng)之間的合作不就應(yīng)該是這樣子嘛。建議訪問https://api.aliyun.com感受一下脖咐。
最后铺敌,以“Gall’s Law”結(jié)尾
A complex system thatworks is invariably found to have evolved from from a simple system thatworked.
A complex systemdesigned from scratch never works and cannot be made to work.You have to startover,beginning with a working simple system.
***"A simplesystem may or may not work.”
互聯(lián)網(wǎng)時代的上半場還沒有結(jié)束,API會讓“互聯(lián)”二字演繹的更加透徹屁擅,讓承載人類文明的全球信息系統(tǒng)更加緊密相連偿凭。
擴(kuò)展閱讀
[1] 理解面向HTTP API的REST和RPC (http://www.oschina.net/translate/understanding-rest-and-rpc-for-http-apis)
[2] OpenAPI規(guī)范 (https://github.com/OAI/OpenAPI-Specification)
[3] API文檔規(guī)范Swagger UI (https://swagger.io/docs/specification/about/)
簡短介紹
PC成就了Web,Web成就了大數(shù)據(jù)和云計(jì)算派歌,大數(shù)據(jù)和云計(jì)算又將成就人工智能弯囊,API作為一個關(guān)鍵的線索始終貫穿其中,將分散在互聯(lián)網(wǎng)世界各處的信息和服務(wù)連接胶果。