但是怎麼樣才能簡單易懂地理解什麼是api?為了解答這個疑惑,讓我們先來看看網路本身是如何運作的。
www和遠端伺服器
當我一想到web時,腦海中就會浮現乙個連線伺服器的大型網路。網際網路上中每個頁面都儲存在遠端伺服器上的某個位置。遠端伺服器已經不是什麼神秘的東西了,它只是一部分用來優化處理請求的遠端計算機。
為了更加清晰地理解,你可以在膝上型電腦上啟動乙個本地web伺服器。眾所周知,本地伺服器是工程師們在向公眾正式發布之前用來開發和測試**用的。
當你在瀏覽器中輸入www.facebook.com時,瀏覽器會向facebook的遠端伺服器發出請求。一旦你的瀏覽器收到響應,就會解析返回的**並展示頁面。
不嚴謹地看,相對於瀏覽器,facebook的伺服器可以視作乙個api,這意味著每次訪問web頁面時,都會與一些遠端伺服器的api進行互動。如果嚴謹一些,api並不等同於遠端伺服器,api只是伺服器的接收請求並傳送響應的一部分。
api作為一種服務客戶的方式
你可能聽說有公司將api打包為產品。例如weather underground將氣象資料api的訪問許可權進行**。
api的使用:最直接的想法就是讓你的**伺服器直接與google的伺服器通訊,並請求建立具有給定詳細資訊的活動。然後,你的伺服器將收到google的響應並處理它,最後將相關資訊返回瀏覽器,例如向使用者傳送確認訊息。
或者,瀏覽器可以繞過你的伺服器直接向google伺服器傳送api請求。
那麼google日曆的api與其他遠端伺服器的api有何不同?從技術角度看,區別在於請求和響應的格式。
要呈現整個網頁,你的瀏覽器需要html格式的響應,其中包含提供展示效果的**,而google日曆的api呼叫只返回純粹的資料,比方說json格式的資料。如果你**的伺服器正在發出api請求,那麼你**的伺服器就是客戶端(類似於當你使用瀏覽器訪問**的時候,你的瀏覽器就成了客戶端)。
從使用者角度來看, api允許他們在不離開你的**的情況下完成操作。大多數現代**都會使用一些第三方api。無論是庫還是服務,許多過去棘手的問題已經有了完善的第三方解決方案。使用現成的第三方解決方案通常情況下會讓開發變得更容易和更可靠。
開發團隊經常會將應用程式分拆到多個通過api相互通訊的伺服器,這種做法已經很常見。通過api為主應用程式伺服器提供輔助應用功能的服務,我們通常稱之為微服務。
總而言之,當公司向其客戶提供api時,它意味著已經構建了一組返回純資料響應的專用url同時響應將不包含用於展示**圖形使用者介面的開銷,大大節約了資源和提高相應效率。
你能用瀏覽器發起api請求嗎?當然可以。由於實際的http傳輸是文字形式進行的,因此你的瀏覽器將始終盡力展示響應的內容。例如,你可以使用瀏覽器訪問github的api,訪問它的時候不需要用訪問令牌(access token)來驗證身份。以下是你在瀏覽器中訪問乙個github使用者的api路徑時獲得的json響應(
瀏覽器已經盡力展示json響應了。像這樣的json響應可以直接在你的**中使用。因為從本文中提取資料很容易,你可以輕鬆地處理這些key-value形式的資料。
假設你在**中使用了第三方庫,這個庫的**一旦合併到你的**中,這個庫就會成為整個應用程式的一部分。作為一種特殊的軟體,這個庫會有乙個api,實現與你的其餘**進行互動的功能。
再說乙個例子:在物件導向設計中,**被組織到乙個個類裡面。你的應用程式可能定義了數百個可以相互互動的類。每個類都可能有乙個api——一套用於與應用程式中的其他類進行互動的公共方法和屬性。類也可能具有私有的內部**,這意味著它對外部作用域是不可見的,這些**顯然就不能構成api了。
希望通過本文,你能夠更加理解api的含義和用法。
CDN最通俗易懂的CDN解釋
cdn的全稱是content delivery network,即內容分發網路。cdn是構建在現有網路基礎之上的智慧型虛擬網路,依靠部署在各地的邊緣伺服器,通過中心平台的負載均衡 內容分發 排程等功能模組,使使用者就近獲取所需內容,降低網路擁塞,提高使用者訪問響應速度和命中率。cdn的關鍵技術主要有...
關於閉包最通俗易懂的解釋
1,對於乙個基本的for迴圈,順序輸出變數值。for var i 1 i 4 i 2,如果for迴圈中有定時器,如下 for var i 1 i 4 i 3000 初衷想要3s後輸出1,2,3。但是3s後,輸出3個4。原因是定時器的非同步執行,for迴圈的執行速度很快,當真正執行到函式體時,此時i早...
如何通俗易懂地解釋卷積?
卷積這個概念,很早以前就學過,但是一直沒有搞懂。教科書上通常會給出定義,給出很多性質,也會用例項和圖形進行解釋,但究竟為什麼要這麼設計,這麼計算,背後的意義是什麼,往往語焉不詳。乙個公式倘若倘若給不出結合實際的直觀的通俗的解釋 也就是背後的 物理 意義 就覺得少了點什麼,覺得不是真的懂了。教科書上一...