什麼是API

閱讀編程資料時經常會看到API這個名詞,網上各種高大上的解釋估計放倒了一批初學者。初學者看到下面這一段話可能就有點頭痛了。

API(Application Programming Interface,應用程序編程接口)是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內部工作機制的細節。——百度百科

這篇文章我們就來通俗易懂地解釋下什麼叫做 API,你只需要花費1分鐘時間。

從文件操作開始談API。

以C語言爲例,我們使用fopen()函數可以打開一個文件,感覺非常簡單。文件保存在硬盤上,要經過複雜的處理才能顯示,這些細節對我們來說是透明的,由操作系統完成。也就是說,我們調用fopen()函數來通知操作系統,讓操作系統打開一個文件。

那麼,我們如何告訴操作系統打開文件呢?

看似簡單的操作到底層都非常複雜,打開文件首先要掃描硬盤,找到文件的位置,然後從文件中讀取一部分數據,將數據放進I/O緩衝區,放進內存;這些數據都是0、1序列,還要對照ASCII表或Unicode表”翻譯“成字符,再在顯示器上顯示出來。這個過程如果要讓程序員來完成,那簡直是噩夢!

怎麼辦呢?操作系統想了一個很好的辦法,它預先把這些複雜的操作寫在一個函數裏面,編譯成一個組件(一般是動態鏈接庫),隨操作系統一起發佈,並配上說明文檔,程序員只需要簡單地調用這些函數就可以完成複雜的工作,讓編程變得簡單有趣。這些封裝好的函數,就叫做API(Application Programming Interface),即應用程序編程接口。

說得更加通俗易懂一些,別人寫好的代碼,或者編譯好的程序,提供給你使用,就叫做API。你使用了別人代碼(或者程序)中的某個函數、類、對象,就叫做使用了某個API。

操作系統 API。

操作系統已經爲我們實現了很多功能,它們都被封裝成了一個一個的函數,有成百上千個之多,這些函數就叫做 API。程序員要想使用某個功能,只需要調用相應的函數。Windows、Linux、Mac OS、Unix 這些常見的操作系統大部分功能都使用C語言開發,它們的 API 也以C語言的形式呈現。操作系統 API 數目衆多,官方必須提供詳細的說明文檔(Windows API 的說明文檔叫 MSDN),程序員在使用 API 時,需要頻繁地查閱這些文檔。

Windows API控件與消息函數 ,如:

AdjustWindowRect 給定一種窗口樣式,計算獲得目標客戶區矩形所需的窗口大小AnyPopup 判斷屏幕上是否存在任何彈出式窗口ArrangeIconicWindows 排列一個父窗口的最小化子窗口

編程語言 API。

各種編程語言自帶的標準庫其實也是API。這些API由編程語言的開發者們編寫,安全、高效、健壯,爲我們實現了常見的功能,讓我們不用再重複造輪子。

C語言 API 以函數的形式呈現,例如 printf()、scanf()、fopen() 等。

Java API 主要以類的形式呈現,例如 String、Thread、Date 等。

C++ 是在C語言的基礎上進行的擴展,所以 C++ API 既包含函數也包含類。

第三方庫(框架)

libxml2——xml的c語言版庫,2個項目使用過,win和Linux下都很犀利~~比較快捷

CURL—— 這個用的主要是使用了他的封裝的http和https的請求,比較犀利,其中包含了openssl的內容

iconv——功能強大的編碼格式轉化庫,UTF8,Unicode等互相轉化很方便

openssl——C的開源密庫,可以進行證書加密和https的訪問的模擬提交可以和CURL配合使用

cocos2d——2D遊戲引擎,相比較傳統的UI自己控制的重畫

OpenCV——開源圖像庫

還有很多第三方(非官方)的組織機構、公司、個人提供的代碼,也是一種 API。這些代碼有的免費,有的收費;有的開源,有的閉源。這些代碼大都針對某個特定的應用領域編寫,有時候被稱爲框架或者庫。例如基於C語言的圖形界面庫GTK,基於C++的網絡庫ACE,基於Java的大數據處理平臺Hadoop,基於Python的Web開發框架Django,基於JavaScript的前端開發框架React。

全球最大的代碼託管網站GitHub也貢獻了很多優秀的代碼,它們大都開源免費。作爲開源代碼庫以及版本控制系統,Github擁有超過900萬開發者用戶。隨着越來越多的應用程序轉移到了雲上,Github已經成爲了管理軟件開發以及發現已有代碼的首選方法。。這些第三方的API數目衆多,種類豐富,我們應該大膽去使用,儘量避免重複造輪子。

常見問題:

假設你想在你的窗體模塊中聲明一個函數,粘貼然後運行,VB會告訴你:編譯錯誤…Declare 語句不允許作爲類或對象模塊中的Public(公共的) 成員。…看起來很糟糕,其實你需要做的只是在聲明前面添加一個Private(私有的)。不要忘了,可是這將使該函數只在該窗體模塊可用。. 在有些情況下,你會得到"不明確的名稱"這樣的提示,這是因爲函數、常量或其他的什麼東西共用了一個名稱。由於絕大多數的函數都進行了別名化,亦即意味着你可以通過Alias子句使用其它的而不是他們原有的名稱,你只需簡單地改變一下函數名稱而它仍然可以正常運行。

總結:API隨處可見,它屏蔽了很多底層細節,實現了很多常用功能,大大簡化了程序員的工作。用好API,事半功倍!

本文由百家號作者:老夏博客 上傳併發布,未經作者許可,不得轉載。

發佈了77 篇原創文章 · 獲贊 66 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章