什麼是API?
API代表一個 應用程序接口. API 表示軟件組件、它的操作、輸入、輸出和底層類型。 但是如何用通俗易懂的英語解釋 API? API 充當信使,從應用程序傳輸您的請求並將響應返回給您。
示例1: 當您在線搜索航班時。 您與航空公司的網站互動。 該網站詳細說明了該特定日期和時間的座位和航班費用。 您可以選擇用餐或座位、行李或寵物要求。
但是,如果您沒有使用航空公司的直接網站,或者使用的是結合了許多航空公司數據的在線旅行社。 為獲取信息,應用程序與航空公司的 API 進行交互。 API 是將數據從旅行社網站獲取到航空公司係統的接口。
它還需要航空公司的響應並立即返回。 這促進了旅行服務和航空公司係統之間的交互——預訂航班。 API 需要一個用於例程、數據結構、對像類和變量的庫。 例如,SOAP 和 REST 服務。
示例2: Best Buy 通過其網站提供“每日特價”特價。 同樣的數據在其移動應用程序中。 該應用程序不擔心內部定價系統——它可以調用每日交易 API 並詢問,特價是多少? Best Buy 以應用程序向最終用戶顯示的標準格式響應所請求的信息。
Example3: 社交媒體的 API 至關重要。 用戶可以訪問內容並將他們跟踪的帳戶和密碼數量保持在較低水平,這樣他們就可以讓事情變得簡單。
- Twitter API:與大多數 Twitter 功能交互
- Facebook API:用於支付、用戶數據和登錄
- Instagram API:標記用戶、查看熱門照片
REST 和 SOAP API 怎麼樣?
SOAP 和 REST的 使用 API 消費服務,稱為 Web API。 Web 服務不依賴於任何先驗知識信息。 SOAP 是一種與平台無關的輕量級 Web 服務協議。 SOAP 是一種基於 XML 的消息傳遞協議。 與 SOAP Web 服務不同,Restful 服務使用 REST 架構,專為點對點通信而構建。
網絡服務
- SOAP Sender——創建和傳輸消息。
- SOAP Receiver – 獲取並處理消息。
- SOAP 中介 - 接收和處理標頭塊。
RESTful Web 服務
Representational State Transfer (REST) 涉及客戶端和服務器之間的關係以及狀態如何處理。 Rest 架構,一個 REST Server 提供對客戶端的資源訪問。 Rest 處理讀取和修改或寫入資源。 統一標識符 (URI) 標識包含文檔的資源。 這將捕獲資源狀態。
REST 比 SOAP 架構更輕。 它解析 JSON,這是一種人類可讀的語言,可以實現數據共享和更易於使用數據,而不是 SOAP 架構使用的 XML。
設計Restful Web Service有幾個原則,分別是:
- 可尋址性——每個資源都應該至少有一個 URL。
- 無狀態——Restful 服務是一種無狀態服務。 請求獨立於服務過去的任何請求。 HTTP 是一種無狀態協議。
- 可緩存 – 標記為可緩存存儲在系統中並在將來重用的數據。 作為對相同請求的響應而不是產生相同的結果。 緩存約束使響應數據標記為可緩存或不可緩存。
- 統一接口——允許使用通用和標準化的接口進行訪問。 使用已定義的 HTTP 方法集合。 遵守這些概念可確保 REST 實現是輕量級的。
休息的優勢
- 使用更簡單的消息格式
- 提供更強的長期效率
- 支持無狀態通信
- 使用 HTTP 標準和語法
- 數據可作為資源使用
休息的缺點
- 不符合 Web 服務標準,例如安全交易等。
- REST 請求不可擴展
REST 與 SOAP 比較
SOAP 和 REST Web 服務之間的區別。
網絡服務 | 休息網絡服務 |
與 REST 相比,需要大量輸入負載。 | REST 是輕量級的,因為它使用 URI 作為數據形式。 |
SOAP 服務的變化通常會導致客戶端代碼發生重大變化。 | 客戶端代碼不受 REST Web 配置中服務更改的影響。 |
返回類型始終是 XML 類型。 | 提供關於返回數據形式的多功能性。 |
基於 XML 的消息協議 | 架構協議 |
在客戶端需要一個 SOAP 庫。 | 通常在 HTTP 上使用不需要庫支持。 |
支持 WS-Security 和 SSL。 | 支持 SSL 和 HTTPS。 |
SOAP 定義了自己的安全性。 | RESTful Web 服務從底層傳輸繼承安全措施。 |
API 發布政策的類型
API 的發布政策是:
私人發布政策:
API 僅供公司內部使用。
合作夥伴發布政策:
API 僅適用於特定的業務合作夥伴。 公司可以控制 API 的質量,因為可以控制誰可以訪問它。
公開發布政策:
API 供公眾使用。 發布政策的可用性向公眾開放。 示例:Microsoft Windows API 和 Apple 的 Cocoa。