1. 程式人生 > >API 與web API

API 與web API

API定義

API(Application Programming Interface,應用程式程式設計介面)是一些預先定義的函式,目的是提供應用程式與開發人員基於某軟體或硬體得以訪問一組例程的能力,而又無需訪問原始碼,或理解內部工作機制的細節。

 

分類

Windows API

API函式包含在Windows系統目錄下的動態連線庫檔案中。Windows API是一套用來控制Windows的各個部件的外觀和行為的預先定義的Windows函式。使用者的每個動作都會引發一個或幾個函式的執行以告訴Windows發生了什麼。這在某種程度上很像Windows的天然程式碼。而其他的語言只是提供一種能自動而且更容易的訪問API的方法。當你點選窗體上的一個按鈕時,Windows會發送一個訊息給窗體,VB獲取這個呼叫並經過分析後生成一個特定事件。 更易理解來說:Windows系統除了協調應用程式的執行、記憶體的分配、系統資源的管理外,同時他也是一個很大的服務中心。呼叫這個服務中心的各種服務(每一種服務就是一個函式)可以幫助應用程式達到開啟視窗、描繪圖形和使用周邊裝置等目的,由於這些函式服務的物件是應用程式,所以稱之為Application Programming Interface,簡稱API 函式。WIN32 API也就是MicrosoftWindows 32位平臺的應用程式程式設計介面。 凡是在 Windows工作環境底下執行的應用程式,都可以呼叫Windows API。  

linux API

在linux中,使用者程式設計介面API遵循了UNIX中最流行的應用程式設計介面標準---POSIX標準。POSIX標準是由IEEE和ISO/IEC共同開發的標準系統。該標準基於當時現有的UNIX實踐和經驗,描述了作業系統的系統呼叫程式設計介面API,用於保證應用程式可以在源程式一級上在多種作業系統上移植執行。這些系統呼叫程式設計介面主要是通過C庫(LIBC)來實現的。

 

API 宣告

編輯 正如在"什麼是API"中所說,API函式包含在位於系統目錄下的DLL檔案中。你可以自己輸入API函式的宣告,但VB提供了一種更簡單的方法,即使用API Text Viewer。 要想在你的工程中宣告API函式,只需執行API Text Viewer,開啟Win32api.txt或MDB。如果你已經把它轉換成了資料庫的話,這樣可以加快速度。 使用預定義的常量和型別也是同樣的方法。 API除了有應用“應用程式介面”的意思外,還特指API的說明文件,也稱為幫助文件。      

程式功能

遠端過程呼叫(RPC):通過作用在共享資料快取器上的過程(或任務)實現程式間的通訊。 標準查詢語言(SQL):是標準的訪問資料的查詢語言,通過通用資料庫實現應用程式間的資料共享。 檔案傳輸:檔案傳輸通過傳送格式化檔案實現應用程式間資料共享。 資訊交付:指鬆耦合或緊耦合應用程式間的小型格式化資訊,通過程式間的直接通訊實現資料共享。 當前應用於 API 的標準包括ANSI 標準SQL API。另外還有一些應用於其它型別的標準尚在制定之中。API 可以應用於所有計算機平臺和作業系統。這些API 以不同的格式連線資料。每種資料格式要求以不同的資料命令和引數實現正確的資料通訊,但同時也會產生不同型別的錯誤。因此,除了具備執行資料共享任務所需的知識以外,這些型別的API 還必須解決很多網路引數問題和可能的差錯條件,即每個應用程式都必須清楚自身是否有強大的效能支援程式間通訊。相反由於這種API 只處理一種資訊格式,所以該情形下的資訊交付API 只提供較小的命令、網路引數以及差錯條件子集。正因為如此,交付API 方式大大降低了系統複雜性,所以當應用程式需要通過多個平臺實現資料共享時,採用資訊交付API 型別是比較理想的選擇。     WeBAPI

    Web Api,網路應用程式介面。它包含了廣泛的功能,網路應用通過API介面,可以實現儲存服務、訊息服務、計算服務的能力,利用這些能力可以進行開發出強大功能的web應用。簡單來說,就是一個介面,比如說,我們要做前後端分離的專案,前端和後端通過url連線,但是我們如何知道後端的資料是否通了,返回的資料是否正確,於是我們通過這個介面知道。

為什麼使用web API

   Web API最重要的是可以構建面向各種客戶端的服務。另外與WCF REST Service不同在於,Web API利用Http協議的各個方面來表達服務(例如 URI/request response header/caching/versioning/content format),因此就省掉很多配置。

當你遇到以下這些情況的時候,就可以考慮使用Web API了。

  • 需要Web Service但是不需要SOAP
  • 需要在已有的WCF服務基礎上建立non-soap-based http服務
  • 只想釋出一些簡單的Http服務,不想使用相對複雜的WCF配置
  • 釋出的服務可能會被頻寬受限的裝置訪問
  • 希望使用開源框架,關鍵時候可以自己除錯或者自定義一下框架

Web API的主要功能:

1. 支援基於Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作

    通過不同的http動作表達不同的含義,這樣就不需要暴露多個API來支援這些基本操作。

2. 請求的回覆通過Http Status Code表達不同含義,並且客戶端可以通過Accept header來與伺服器協商格式,例如你希望伺服器返回JSON格式還是XML格式。

3. 請求的回覆格式支援 JSON,XML,並且可以擴充套件新增其他格式。

4. 原生支援OData。

5. 支援Self-host或者IIS host。

6. 支援大多數MVC功能,例如Routing/Controller/Action Result/Filter/Model Builder/IOC Container/Dependency Injection。