什么是API


API是什么,Linux系統中系統調用可以理解是操作系統為用戶提供的一系列操作的接口(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控件與消息函數 ,如:

                 1.AdjustWindowRect 給定一種窗口樣式,計算獲得目標客戶區矩形所需的窗口大小。

                 2.AnyPopup 判斷屏幕上是否存在任何彈出式窗口。

                 3.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子句使用其它的而不是他們原有的名稱,你只需簡單地改變一下函數名稱而它仍然可以正常運行。

 

 原文出處:http://baijiahao.baidu.com/s?id=1586026960877760125&wfr=spider&for=pc

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM