大家可能在許多書上看到過 API的英文全稱(Application Programming Interface),WIN32 API也就是MicrosoftWindows 32位平台的應用程序編程接口。對這個定義的理解,需要追溯到操作系統的發展歷史上,當WINDOWS操作系統開始占據主導地位的時候,開發WINDOWS平台下的應用程序成為人們的需要。而在WINDOWS程序設計領域處於發展的初期,WINDOWS程序員所能使用的編程工具唯有API函數,這些函數是WINDOWS提供給應用程序與操作系統的接口, 他們猶如“積木塊”一樣,可以搭建出各種界面豐富,功能靈活的應用程序。所以可以認為API函數是構築整個WINDOWS框架的基石,在它的下面是WINDOWS的操作系統核心,而它的上面則是所有的華麗的WINDOWS應用程序。
但是,那時的WINDOWS程序開發還是比較復雜的工作,程序員必須熟記一大堆常用的API函數,而且還得對WINDOWS操作系統有深入的了解。然而隨着軟件技術的不斷發展,在WINDOWS平台上出現了很多優秀的可視化編程環境,程序員可以采用“即見即所得”的編程方式來開發具有精美用戶界面和功能強大的應用程序。
這些優秀可視化編程環境操作簡單、界面友好(諸如VB、VC++、DELPHI等),在這些工具中提供了大量的類庫和各種控件,它們替代了API的神秘功能,事實上這些類庫和控件都是構架在WIN32 API函數基礎之上的,是封裝了的API函數的集合。它們把常用的API函數的組合在一起成為一個控件或類庫,並賦予其方便的使用方法,所以極大的加速了WINDOWS應用程序開發的過程。有了這些控件和類庫,程序員便可以把主要精力放在程序整體功能的設計上,而不必過於關注技術細節。
實際上如果我們要開發出更靈活、更實用、更具效率的應用程序,必然要涉及到直接使用API函數,雖然類庫和控件使應用程序的開發簡單的多,但它們只提供WINDOWS的一般功能,對於比較復雜和特殊的功能來說,使用類庫和控件是非常難以實現的,這時就需要采用API函數來實現。
這也是API函數使用的場合,所以我們對待API函數不必刻來研究每一個函數的用法,那也是不現實的(能用的到的API函數有幾千個呢)。正如某位大蝦所說:API不要去學,在需要的時候去查API幫助就足夠了。
明確一個概念,軟件是運行在系統平台的支持上的,軟件的功能其實就是向系統伸請,並由系統完成這些功能的過程。
那么軟件要做的事情如何傳遞給系統呢,也就是這些API的作用了,系統定義了這些API函數,做為支持軟件執行系統功能的接口。
不同的操作系統自然API會是不同的.
API 就是應用程序編程接口。它是能用來操作組件、應用程序或者操作系統的一組函數。典型的情況下,API 由一個或多個提供某種特殊功能的 DLL 組成。(java中有所不同,但大同小異)DLL 是一個文件,其中包含了在 Microsoft Windows 下運行的任何應用程序都可調用的函數。運行時,DLL 中的函數動態地鏈接到調用它的應用程序中。無論有多少應用程序調用 DLL 中的某個函數,在磁盤上只有一個文件包含該函數,且只在它調入內存時才創建該 DLL.
您聽到最多的 API 可能是 Windows API,它包括構成 Windows 操作系統的各種 DLL。每個 Windows 應用程序都直接或間接地與 Windows API 互動。Windows API 保證 Windows 下運行的所有應用程序的行為方式一致。
注意 隨着 Windows 操作系統的發展,現已發布了幾個版本的 Windows API。Windows 3.1 使用 Win16 API。Microsoft Windows NTindows 95 和 Windows 98 平台使用 Microsoft Win32 API。 除 Windows API 外,其他一些 API 也已發布。例如,郵件應用程序編程接口 (MAPI) 是一組可用於編寫電子郵件應用程序的 DLL。
API 傳統上是為開發 Windows 應用程序的 C 和 C++ 程序員編寫的,但其他的編程語言(包括VBA)也可以調用 DLL 中的函數。因為大部分 DLL 主要是為 C 和 C++ 程序員編寫和整理說明的,所以調用 DLL 函數的方法與調用 VBA 函數會有所不同。在使用 API 時必須了解如何給 DLL 函數傳遞參數。
警告 調用 Windows API 和 其他 DLL 函數可能會給您的應用程序帶來不良影響。從自己的代碼中直接調用 DLL 函數時,您繞過了 VBA 通常提供的一些安全機制。如果在定義或調用 DLL 函數時出現錯誤(所有程序員都不可避免),可能會在應用程序中引起應用程序錯誤(也稱為通用性保護錯誤,或 GPF)。最好的解決辦法是在運行代碼以前保存該項目,並確保了解 DLL 函數調用的原理。
接口是一個抽象概念,一般有好幾種層面的接口。Interface可翻譯為界面也可翻譯為接口,翻譯為接口的由來應該是從電器的插口而來(未做考證)。通俗說法:接口就是用來連接而開放的入口。
大致有這些類型的接口:硬件接口、用戶界面(UI)、軟件接口、面向對象接口。
編程接口(API)應該是軟件接口中的一個分支。當然接口在不同的領域有N多的分類。
至於API一般僅僅限於應用程序的編程接口。通俗的解釋應該是:一個組件(或程序庫)提供給開發者進行編程使用的,通過代碼可以與之溝通的入口。比如說你下載了一個控件包,通過閱讀說明你知道應該如何創建上下文、初始化、設置屬性、調用、回調、事件處理,這些就是這個控件包的API。
API一般對應函數,在面向對象領域可能對應類提供的特性,而對於傳輸協議一般指協議的一種實現所提供的使用該協議的方式。
返回值 方法名(參數1, 參數2 ...) 這就可以認為是接口
接口:故名思議就是提供轉接的口子。
你可以理解為遵循同一個規則的多個程序之間交換數據的一種方式。
往大了說,有網絡接口。例如以 HTTP GET 方式請求 http://sf.gg 並獲取返回值, http://sf.gg 就可以視為一個接口。MySQL client 使用 ip port user password 訪問某個ip 端口上的 MySQL Server ,這個 Server 也可以視為接口。當然,javascript 通過 XMLHttpRequest 請求 http server 也可以視為一個接口通信。
往小了說,有程序內部接口。在某個類里面調用其他類提供的方法,也可以算是接口。
舉兩個例子: 1. 新浪微博是一個網站,所有的數據都是在新浪微博上的。新浪微博提供一整套的接口,調用接口我們可以獲取到里面的數據。(相當於你的理解) 2. Windows是一個封裝好的系統,按道理用戶是沒有權在Windows里頭干任何事的,但是Windows提供了一整套的接口,調用接口我們可以操作Windows做出一些行為。
所以我個人的理解是利用接口,我們可以對一個封裝好的整體進行操作,不僅僅是獲取數據(前端說的可能偏向這個方面吧,從整體獲取或者向整體提交數據),還可以對整體進行操作。平常寫的類也可以算是提供了接口,類是整體,類的成員函數就是接口。
應用程序接口為:“‘計算機操作系統(Operating system)’或‘程序庫’提供給應用程序調用使用的代碼”。其主要目的是讓應用程序開發人員得以調用一組例程功能,而無須考慮其底層的源代碼為何、或理解其內部工作機制的細節。API本身是抽象的,它僅定義了一個接口,而不涉入應用程序如何實現的細節。
例如,圖形庫中的一組API定義了繪制指針的方式,可於圖形輸出設備上顯示指針。當應用程序需要指針功能時,可在引用、編譯時鏈接到這組API,而運行時就會調用此API的實現(庫)來顯示指針。
應用程序接口是一組數量上千、極其復雜的函數和副程序,可讓程序員做很多任務作,譬如“讀取文件”、“顯示菜單”、“在視窗中顯示網頁”等等。操作系統的API可用來分配存儲器或讀取文件。許多系統應用程序借由API接口來實現,像是圖形系統、數據庫、網絡Web服務,甚至是在線游戲。
應用程序接口有諸多不同設計。用於快速執行的接口通常包括函數、常量、變量與數據結構。也有其它方式,如通過解釋器,或是提供抽象層以屏蔽同API實現相關的信息,確保使用API的代碼無需更改而適應實現變化。
應用程序接口經常是軟件開發工具包(SDK)的一部分
API又分為(Windows、Linux、Unix等系統的)系統級API,及非操作系統級的自定義API。作為一種有效的代碼封裝模式,微軟Windows的API開發模式已經為許多商業應用開發的公司所借鑒,並開發出某些商業應用系統的API函數予以發布,方便第三方進行功能擴展。如Google、蘋果電腦公司,以及諾基亞等手機開發的API等等。
(出處: http://zh.wikipedia.org/zh-cn/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%8E%A5%E5%8F%A3)