孝感網(wǎng)站建設(shè)公司站點(diǎn)推廣是什么意思
何為API?如果你在百度百科上搜索,你會得到如下結(jié)果:API(Application Programming Interface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。那么再通俗一點(diǎn)來說,API究竟是什么呢?
在我學(xué)習(xí)軟件開發(fā)之前,API聽起來似乎像是一種啤酒。
而現(xiàn)在,我開始頻繁使用這一術(shù)語,以至于我在酒吧里都想點(diǎn)一杯API來喝喝看了。
酒保發(fā)送的響應(yīng)是:“查無此酒”——404:找不到該資源。
我碰見過很多人,有科技圈內(nèi)的,也有圈外的。對于API這樣一個常見術(shù)語的含義,他們的理解都存在些許偏差或不確定的成分。
從技術(shù)角度來說,API指的是應(yīng)用程序編程接口。大多數(shù)大型企業(yè)都會為自己的客戶建立應(yīng)用程序編程接口,或供內(nèi)部使用。
但是你該如何用大白話來解釋API這個術(shù)語呢?除了在開發(fā)和業(yè)務(wù)中的含義,API是不是有更寬泛的含義呢?首先,讓我們退后一步,來了解一下互聯(lián)網(wǎng)究竟是如何工作的。
WWW和遠(yuǎn)程服務(wù)器
當(dāng)我想到互聯(lián)網(wǎng)的時候,我的腦海中浮現(xiàn)出了一個由互聯(lián)服務(wù)器構(gòu)成的大型網(wǎng)絡(luò)。
互聯(lián)網(wǎng)上的每一個界面都被存儲在一個遠(yuǎn)程服務(wù)器里。遠(yuǎn)程服務(wù)器也沒有大家想的那么神秘——它不過是用來優(yōu)化處理需求的遠(yuǎn)程計算機(jī)罷了。
為了正確了解API,你可以在自己的筆記本電腦上啟動一個能面向網(wǎng)絡(luò)提供整個網(wǎng)站服務(wù)的服務(wù)器(事實(shí)上,在網(wǎng)站正式上線之前,工程師們就是通過本地服務(wù)器來開發(fā)網(wǎng)站的)。
當(dāng)你在瀏覽器中輸入www.facebook.com,一則請求會出現(xiàn)在Facebook的遠(yuǎn)程服務(wù)器上。一旦你的瀏覽器收到了響應(yīng),它就會解析代碼、呈現(xiàn)出網(wǎng)頁。
對于瀏覽器來說(這也是所謂的客戶端),Facebook的服務(wù)器就是一個應(yīng)用程序編程接口。這意味著每當(dāng)你在互聯(lián)網(wǎng)上訪問一個頁面的時候,你都在與某個遠(yuǎn)程服務(wù)器的API發(fā)生交互。
API并不完全等同于遠(yuǎn)程服務(wù)器——它其實(shí)是服務(wù)器的一部分,負(fù)責(zé)接收請求并發(fā)送響應(yīng)。
API是一種為客戶提供服務(wù)的方式
你也許聽說過有公司將API包裝成產(chǎn)品。舉個例子,Weather Underground就會出售其天氣數(shù)據(jù)API的訪問權(quán)限給其他人。
示例場景:你是一家小企業(yè),公司網(wǎng)站上有一個表格是用來給客戶注冊預(yù)約的。你想要憑借這些預(yù)約細(xì)節(jié)信息,讓客戶能夠自動在谷歌日程上創(chuàng)建活動。
API使用:這就意味著,你的網(wǎng)站服務(wù)器需要直接與谷歌服務(wù)器進(jìn)行對話,在掌握既定細(xì)節(jié)信息的情況下,申請創(chuàng)建活動。之后,你的服務(wù)器就會接收到谷歌的響應(yīng)并進(jìn)行處理,然后將相關(guān)信息發(fā)送回瀏覽器,比如說向用戶發(fā)送一個確認(rèn)信息。
此外,你的瀏覽器通??梢岳@過自己的服務(wù)器,直接向谷歌服務(wù)器發(fā)送API請求。
那么谷歌日歷的API與其他遠(yuǎn)程服務(wù)器的API存在什么區(qū)別呢?
從技術(shù)角度來說,不同之處在于請求和響應(yīng)的形式。
為了提交整個頁面,你的瀏覽器會期待得到HTML格式的響應(yīng),這就包括顯示代碼。而谷歌日歷的API只會返回一些數(shù)據(jù)——大多是與JSON格式相同。
如果你的網(wǎng)站瀏覽器發(fā)出了API請求,之后網(wǎng)站服務(wù)器就成為了客戶端(當(dāng)你使用瀏覽器訪問某一網(wǎng)站的時候,你的瀏覽器也相當(dāng)于是一個客戶端)。
從用戶角度來說,API可以讓他們無需離開網(wǎng)站就能完成原先的操作。
現(xiàn)今大多數(shù)網(wǎng)站至少都會使用一些第三方API。
存在的問題都有了第三方解決方案,但是是以庫或服務(wù)的形式。使用現(xiàn)有的解決方案已經(jīng)變得更加方便且可靠了。
開發(fā)團(tuán)隊將自己的應(yīng)用分解到多個可以通過API進(jìn)行互通的服務(wù)器上,這已經(jīng)是司空見慣的做法了。這些為主應(yīng)用服務(wù)器提供輔助功能的服務(wù)器通常被稱作是微服務(wù)架構(gòu)。
總結(jié)一下,當(dāng)一家公司為客戶提供API的時候,這僅僅意味著它們建立了一組專用的URL通道,用來返回純數(shù)據(jù)響應(yīng)——也就是說,響應(yīng)內(nèi)容不會包含圖形用戶界面(例如網(wǎng)站)中的顯示開銷。
你能夠用自己的瀏覽器發(fā)送這種請求嗎?通常都是可以的。由于實(shí)際的HTTP傳輸都是以文本的形式進(jìn)行的,你的瀏覽器可以一直達(dá)到顯示響應(yīng)的最佳狀態(tài)。
舉個例子,你可以直接通過瀏覽器訪問GitHub的API,而無需訪問令牌。如下是你在瀏覽器中訪問GitHub用戶API路徑時得到的JSON響應(yīng):接口測試端口
?
瀏覽器似乎可以很好地顯示出JSON響應(yīng)結(jié)果。像這樣的JSON響應(yīng),你就可以直接用在代碼中了。從這些文本中,你很容易可以提取出數(shù)據(jù),之后你就可以基于這些數(shù)據(jù)做自己想要做的事情了。
A指的是“應(yīng)用”(Application)
作為結(jié)束,我就再給出幾個API的實(shí)例吧。
“應(yīng)用”(Application)可以指代很多事物。如下是它在API語境下的含義:
API:
1. 一個提供特定功能的軟件
2. 整個服務(wù)器、整個應(yīng)用或一款應(yīng)用的很小一部分
從本質(zhì)上來說,任何能從自身環(huán)境中分離出來的軟件都可以成為API中的“A”,且很可能它本身也是某種API。就這么說吧,你在代碼中使用的是第三方庫。一旦該庫與你的代碼整合在了一起,那么這個庫也就成為了整體應(yīng)用的一部分。作為軟件中特殊的一部分,庫很有可能也擁有一個API,使其與剩余代碼進(jìn)行交互。
還有一個例子:在Object Oriented Design(面向?qū)ο缶幊?#xff09;中,代碼被編成了對象。你的應(yīng)用程序也許擁有數(shù)百個能夠?qū)崿F(xiàn)交互的對象。
每一個對象都有一個API——這是一組公共方法和屬性,對象可以用它來與應(yīng)用中的其他對象進(jìn)行交互。
對象也許還擁有私有的內(nèi)部邏輯,這就意味著它在躲避外界環(huán)境(那它也就不是一個API)。
從上述討論的內(nèi)容來看,我希望你能掌握API的廣義,也能了解現(xiàn)今這一術(shù)語的常見含義。