API到底是什麼?

API是指什麼?

API好像是個很神秘的東西,大佬們總是一直提到它,那什麼是API呢?和我一起了解一下,這樣下次再提到就明白啦。

概念

API(Advanced Programmers Interface,高級程序接口)(注:API實際是指Application Programming Interface,應用程序編程接口;此處疑為原文錯誤,不過在VB中也可以這麼說吧!)

是一套用來控制Windows的各個部件(從桌面的外觀到為一個新進程分配的內存)的外觀和行為的一套預先定義的Windows函數.用戶的每個動作都會引發一個或幾個函數的運行以Windows告訴發生了什麼。

WWW和遠程服務器

從技術角度來說,API指的是應用程序編程接口。大多數大型企業都會為自己的客戶建立應用程序編程接口,或供內部使用。

但是你該如何用大白話來解釋API這個術語呢?除了在開發和業務中的含義,API是不是有更寬泛的含義呢?

首先,讓我們退後一步,來了解一下互聯網究竟是如何工作的。

當我想到互聯網的時候,我的腦海中浮現出了一個由互聯服務器構成的大型網絡。

互聯網上的每一個界面都被存儲在一個遠程服務器裡。遠程服務器也沒有大家想的那麼神秘——它不過是用來優化處理需求的遠程計算機罷了。

為了正確瞭解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響應:

API到底是什麼?

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

API實例

A指的是“應用”(Application)

“應用”(Application)可以指代很多事物。如下是它在API語境下的含義:

API

  1. 一個提供特定功能的軟件
  2. 整個服務器、整個應用或一款應用的很小一部分

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

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

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

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

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

另外的含義

1:美國石油協會(API:American Petrolenm Institute):制定機油標準的組織。汽車用發動機機油必須符合API提出的標準。

2:API還有一種含意:空氣汙染指數。【英文 air pollution index 的縮寫】

3:在JAVA中,API除了有應用“程序程序接口”的意思外,還特指JAVA API的說明文檔,也稱為JAVA幫助文檔。

文章主要來源:
http://baijiahao.baidu.com/s?id=1597881116201407882&wfr=spider&for=pc


分享到:


相關文章: