API的概念
API(Application Programming Interface, 應用程序編程接口)是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼或理解內部工作機制的細節。
API的特點
- API是一個明確定義的接口,可以爲其他軟件提供特定服務。
- API可以小到只包含一個單獨的函數,也可以大到包含數以百計的類、方法、全局函數、數據類型、枚舉類型和常量等。
- API的實現可以是私有的,也可以是開源的。
API的分類
- 面嚮對象語言的API,如Java API列表
- 庫與框架的API,如Windows API、Windows DirectX
- API與協議,如LDAP應用程序接口
- API與設備接口,如PC BIOS調用接口、ASPI for SCSI設備接口
- Web API,如百度地圖API、新浪微博API、阿里雲API市場
爲什麼要使用API
- 快速擴展功能
- 避免“造輪子”,提高開發效率
- 降低模塊之間的耦合度
Web API協議
Web API一般採用HTTP作爲底層協議,HTTP請求機制如下:
- 客戶端向服務器發送一個請求
- 服務器給客戶端一個響應,告訴客戶端是否可以完成它請求的工作
- 客戶端和服務器可以採用不同的編程語言平臺
HTTP請求包含的內容
爲了構造有效的請求,客戶端需要包含4部分內容:
- 請求地址 URL
- 請求方式 Method
- 請求頭 Headers
- 請求主體 Body
請求頭和請求主體
- 請求頭Headers提供了請求的元信息,是一個簡單的項目列表,其中有客戶端發送請求的時間和請求主體大小、身份認證等信息。
- 請求主體Body包含了客戶端希望發送給服務器的數據。
返回的狀態碼
- 2xx 請求成功
- 4xx 業務報錯,一般爲參數錯誤、簽名錯誤、請求方式錯誤等
- 5xx 服務不可用或服務器內部錯誤
返回的數據格式
- XML
- JSON 一種輕量級的數據交換格式,採用完全獨立於語言的文本格式,同時易於解析和生成,是大多數API採用的返回數據格式。
更多JSON介紹可參考:https://blog.csdn.net/hwhsong/article/details/51222228
API和SDK的區別
- 定義的範圍:
- API是一個個具體的函數,一個確定的功能,一個獲取後端數據的通道。
- SDK是輔助開發某類軟件的相關文檔、範例和工具的集合。
- 封裝的形式:
- API是封裝在服務端層面的Library,從網絡服務的層面暴露出接口供調用,與編程語言實現無關。
- SDK是封裝在客戶端層面的Library,提供一些客戶端API接口,SDK暴露出來的接口是和編程語言相關的。
以更形象的方式解釋一下:
你想提取公積金,於是你公司的HR告訴你,你需要去找一個能辦理公積金業務的銀行。
這裏的能辦理公積金業務代表一種能力,一種API。如果一個銀行具有辦理公積金業務的能力,那麼就說這個銀行具有這種API。
而這個銀行呢,它就是一個SDK,它提供辦理公積金的能力,所有細節,並且,它還可能給你提供額外的功能,例如免費複印身份證複印件的功能。