大白話科普API(Application Programming Interface)

轉載:http://baijiahao.baidu.com/s?id=1597881116201407882&wfr=spider&for=pc

 

何爲API?如果你在百度百科上搜索,你會得到如下結果:API(Application Programming Interface,應用程序編程接口)是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內部工作機制的細節。那麼再通俗一點來說,API究竟是什麼呢?

在我學習軟件開發之前,API聽起來似乎像是一種啤酒。而現在,我開始頻繁使用這一術語,以至於我在酒吧裏都想點一杯API來喝喝看了。酒保發送的響應是:“查無此酒”——404:找不到該資源。

我碰見過很多人,有科技圈內的,也有圈外的。對於API這樣一個常見術語的含義,他們的理解都存在些許偏差或不確定的成分。

技術角度來說,API指的是應用程序編程接口。大多數大型企業都會爲自己的客戶建立應用程序編程接口,或供內部使用。但是你該如何用大白話來解釋API這個術語呢?除了在開發和業務中的含義,API是不是有更寬泛的含義呢?首先,讓我們退後一步,來了解一下互聯網究竟是如何工作的。

WWW和遠程服務器

當我想到互聯網的時候,我的腦海中浮現出了一個由互聯服務器構成的大型網絡。互聯網上的每一個界面都被存儲在一個遠程服務器裏。遠程服務器也沒有大家想的那麼神祕——它不過是用來優化處理需求的遠程計算機罷了。

爲了正確瞭解API,你可以在自己的筆記本電腦上啓動一個能面向網絡提供整個網站服務的服務器(事實上,在網站正式上線之前,工程師們就是通過本地服務器來開發網站的)。

當你在瀏覽器中輸入www.facebook.com,一則請求會出現在Facebook的遠程服務器上。一旦你的瀏覽器收到了響應,它就會解析代碼、呈現出網頁

對於瀏覽器來說(這也是所謂的客戶端),Facebook的服務器就是一個應用程序編程接口。這意味着每當你在互聯網上訪問一個頁面的時候,你都在與某個遠程服務器的API發生交互。

API並不完全等同於遠程服務器——它其實是服務器的一部分,負責接收請求併發送響應。

API是一種爲客戶提供服務的方式

你也許聽說過有公司將API包裝成產品。舉個例子,Weather Underground就會出售其天氣數據API的訪問權限給其他人。

示例場景:你是一家小企業,公司網站上有一個表格是用來給客戶註冊預約的。你想要憑藉這些預約細節信息,讓客戶能夠自動在谷歌日程上創建活動。

API使用:這就意味着,你的網站服務器需要直接與谷歌服務器進行對話,在掌握既定細節信息的情況下,申請創建活動。之後,你的服務器就會接收到谷歌的響應並進行處理,然後將相關信息發送回瀏覽器,比如說向用戶發送一個確認信息。此外,你的瀏覽器通常可以繞過自己的服務器,直接向谷歌服務器發送API請求。

那麼谷歌日曆的API與其他遠程服務器的API存在什麼區別呢?

從技術角度來說,不同之處在於請求和響應的形式。

爲了提交整個頁面,你的瀏覽器會期待得到HTML格式的響應,這就包括顯示代碼。而谷歌日曆的API只會返回一些數據——大多是與JSON格式相同

如果你的網站瀏覽器發出了API請求,之後網站服務器就成爲了客戶端(當你使用瀏覽器訪問某一網站的時候,你的瀏覽器也相當於是一個客戶端)。

從用戶角度來說,API可以讓他們無需離開網站就能完成原先的操作。

現今大多數網站至少都會使用一些第三方API。

存在的問題都有了第三方解決方案,但是是以庫或服務的形式。使用現有的解決方案已經變得更加方便且可靠了。

開發團隊將自己的應用分解到多個可以通過API進行互通的服務器上,這已經是司空見慣的做法了。這些爲主應用服務器提供輔助功能的服務器通常被稱作是微服務架構。

總結一下,當一家公司爲客戶提供API的時候,這僅僅意味着它們建立了一組專用的URL通道,用來返回純數據響應——也就是說,響應內容不會包含圖形用戶界面(例如網站)中的顯示開銷。

你能夠用自己的瀏覽器發送這種請求嗎?通常都是可以的。由於實際的HTTP傳輸都是以文本的形式進行的,你的瀏覽器可以一直達到顯示響應的最佳狀態。舉個例子,你可以直接通過瀏覽器訪問GitHub的API,而無需訪問令牌。如下是你在瀏覽器中訪問GitHub用戶API路徑時得到的JSON響應

 

瀏覽器似乎可以很好地顯示出JSON響應結果。像這樣的JSON響應,你就可以直接用在代碼中了。從這些文本中,你很容易可以提取出數據,之後你就可以基於這些數據做自己想要做的事情了。

A指的是“應用”(Application)作爲結束,我就再給出幾個API的實例吧。“應用”(Application)可以指代很多事物。如下是它在API語境下的含義:

API:

1. 一個提供特定功能的軟件

2. 整個服務器、整個應用或一款應用的很小一部分

從本質上來說,任何能從自身環境中分離出來的軟件都可以成爲API中的“A”,且很可能它本身也是某種API。就這麼說吧,你在代碼中使用的是第三方庫。一旦該庫與你的代碼整合在了一起,那麼這個庫也就成爲了整體應用的一部分。作爲軟件中特殊的一部分,庫很有可能也擁有一個API,使其與剩餘代碼進行交互。

還有一個例子:在Object Oriented Design(面向對象編程)中,代碼被編成了對象。你的應用程序也許擁有數百個能夠實現交互的對象。

每一個對象都有一個API——這是一組公共方法和屬性,對象可以用它來與應用中的其他對象進行交互。

對象也許還擁有私有的內部邏輯,這就意味着它在躲避外界環境(那它也就不是一個API)。

從上述討論的內容來看,我希望你能掌握API的廣義,也能瞭解現今這一術語的常見含義。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章