您是否想將您的應用程序鏈接到 Facebook,以便它可以自動生成帖子,或者鏈接到 Instagram,以便您可以使用某些主題標籤重新發布照片?
您可能還希望在您的網站上包含 YouTube 視頻。 應用程序編程接口允許您執行所有這些任務以及更多任務(API)。
借助 Instagram API、Facebook API 和 YouTube API 等 API,不同的應用程序可以以安全且標準化的方式相互“對話”。
換句話說,一個程序可以從另一個軟件獲取功能或數據,並利用它們來改進自己的功能或用戶體驗。 但應用程序如何發出這些請求、處理它們並以其他人可以理解的方式響應它們?
這取決於 API 的創建方式。 在討論 API(應用程序編程接口)設計時,通常會比較 SOAP 與 REST 這兩種最著名的 API 範例。
當 SOAP API(簡單對象訪問協議)成為 Oracle、Sun 和 PayPal 等公司的黃金標準時,大約一年後,Google、Amazon 和 eBay 對 REST API 做出了同等但相反的反應。
在這篇文章中,我們將比較 SOAP API 與 REST API,以便您可以決定哪一個最適合您的目的。
我們將從定義 API 開始。
什麼是API?
應用程序編程接口簡稱API。 API 本質上是支持應用程序開發的方法和功能的集合。 他們可以訪問不同程序、服務或操作系統的信息和功能。
它們充當各種軟件系統之間的中間人。 它們可以在兩個未連接的程序之間進行“交談”。
讓我們以積極參與交易和金融市場的股票經紀人為例。 自動化的集合 交易算法 可以通過API連接到交易者最喜歡的交易經紀平台。 這使您(交易者)能夠執行電子交易或查看實時報價和定價數據。
什麼是休息?
真正的“Web 服務”API 包括 REST(表述性狀態傳輸)。 REST API 構建於 URI(統一資源標識符,其中 URL 是一種特殊類型)、HTTP 協議以及與瀏覽器兼容的 JSON 數據格式之上。
正如我們已經說過的,也可能會使用 SOAP 協議。 REST API 可以很容易創建和擴展,但它們也可能非常龐大且困難 — 這一切都取決於它們的創建、擴展方式以及它們的用途。
資源限制、降低的安全要求、瀏覽器客戶端兼容性、可發現性、數據健康狀況和可擴展性是您希望開發 RESTful API 的一些原因 - 實際上適用於 Web 服務。
REST 提供了更輕量級的選項。 SOAP 很難使用,對許多開發人員來說也是一種負擔。 例如,將 SOAP 與 JavaScript 結合使用需要編寫大量代碼來完成簡單的操作,因為每次都必須創建必要的 XML 結構。
REST(通常)使用簡單的 URL 代替 XML 請求。 儘管在極少數情況下您必須提供更多詳細信息,但大多數 RESTful Web 服務僅使用 URL 技術。
REST 可以使用四個 HTTP 1.1 動詞 GET、POST、PUT 和 DELETE 來執行操作。 與 SOAP 不同,REST 不需要 XML 形式的答案。
可以使用基於 REST 的 Web 服務,以命令分隔值 (CSV)、JavaScript 對象表示法 (JSON) 和真正簡單聚合 (RSS) 格式輸出數據 (RSS)。
目標是您可以使用應用程序所使用的語言以易於解析的格式獲得所需的結果。
功能
- 由於 HTTP 協議,REST 強調簡單性高於一切。
- Web 最適合 REST。 由於使用JSON作為數據格式,因此與瀏覽器兼容。
- REST 以其出色的可擴展性和速度而聞名。
- REST API 使客戶端-服務器連接和架構變得更容易訪問。 如果是 RESTful,則使用此客戶端-服務器模型構建,並在兩方之間進行往返傳遞數據有效負載。
- REST API 採用單獨的標準接口。 確保所有應用程序通過同一網關統一連接,簡化應用程序與 API 的通信方式。
什麼是肥皂?
它自己的協議稱為 SOAP(簡單對象訪問協議),比 REST 稍微複雜一些,因為它指定了更多標準,包括與安全和消息傳遞相關的標準。
這些固有的規範確實會帶來一些額外的開銷。 然而,對於需要更廣泛的安全性、事務和 ACID(原子性、一致性、隔離性、持久性)合規性功能的企業來說,它們可能是決定性因素。
為了進行比較,需要注意的是 SOAP 的許多優點並不經常適用於 Web 服務應用程序,這使得它們更適合企業類型的場景。
更高程度的安全性(例如當 移動應用程序 與銀行交互)、需要可靠通信的消息傳遞應用程序、與遺留系統交互或 ACID 合規性是您希望使用 SOAP API 設計應用程序的幾個原因。
SOAP 提供的消息傳遞功能完全基於 XML。 Microsoft (CORBA) 首次創建 SOAP 時,分佈式組件對像模型 (DCOM) 和公共對象請求代理架構等較舊的與 Internet 不兼容的技術已被 SOAP 所取代。
對二進制通信的依賴導致這些系統失敗。 在 Internet 上,像 SOAP 使用的 XML 消息傳遞功能更好。
功能
- SOAP 的安全性明顯更加嚴格。 WS-Security 是一種內置標準,除了 SSL 支持之外,如果需要,還可以為 SOAP 提供額外的企業級安全功能。
- 成功/重試推理以獲得值得信賴的消息傳遞性能。 由於REST缺乏標準化的消息機制,因此只能在通信失敗時重試。 即使使用 SOAP 中間體,由於其內置的成功/重試邏輯,SOAP 也能提供端到端的可靠性。
- SOAP 已經符合 ACID 標準。 通過規定事務如何與數據庫交互,ACID 合規性可以最大限度地減少異常並保護數據庫的一致性。 由於 ACID 比其他數據一致性模型更加謹慎,因此在管理敏感事務(無論是財務事務還是其他事務)時經常使用它。
- 由於 SOAP 是完全基於 XML 的通信,因此程序員很容易理解。
- XML 消息傳遞協議是對 HTTP 協議的補充。
- 從一台計算機到另一台計算機的通信可以通過 SOAP 消息傳遞進行傳播。
- 也可以實現客戶端-服務器架構。 客戶端可以使用 SOAP 協議消息來調用位於服務器端的遠程過程調用。
REST 與 SOAP 的差異
1。 架構
API 旨在主要顯示服務器上應用程序業務邏輯的特定組件。 REST 使用 URI 來達到同樣的目的,而 SOAP 為此使用服務接口。
REST API 是在數據之後創建的,而 SOAP API 是在 API 說明的功能之後開發的。 與更加功能驅動的 SOAP 相比,REST 是更加數據驅動的設計。
2。 高速緩存
瀏覽器可以再次使用已標記為可緩存的數據,而無需向服務器發出新請求。 節省時間和精力就是這樣做的好處。
由於 SOAP 查詢是通過 POST 請求提交的,因此不會在 HTTP 級別緩存響應,而 HTTP 標準認為 POST 請求是非冪等的。 如果您想使用緩存,您仍然必須構建必要的技術,因為 REST API 不包含此實現。
3. 資源與帶寬
由於 SOAP 使用信封式有效負載傳輸,開銷略有增加,因此需要額外的帶寬。 REST 的輕量級特性在這些情況下是一個優勢,因為它通常用於 Web 服務。
4. 安全
WS 安全性是可取的,SOAP 支持該安全性,並且在傳輸級別比 SSL 稍微更徹底。 將企業級安全措施與其結合起來也是一個完美的選擇。
SOAP 和 REST 都支持使用 SSL 的端到端加密,並且 REST 可以使用 HTTPS(HTTP 協議的安全變體)。
5. 處理有效負載
通過互聯網傳輸的數據稱為有效負載。 被認為“重”的有效負載需要額外的資源。 與使用 XML 的 SOAP 相比,REST 通常使用 JSON 和 HTTP 來幫助減少負載。
由於通信契約極其嚴格,客戶端通常必須使用帶有生成代碼的專用客戶端庫來訪問 SOAP API。
因此,SOAP 提供了比 REST 更低的抽象級別,並且與服務器的聯繫更緊密。
何時使用 REST?
- 創建公共 API:REST API 是構建公共 Web 服務的首選,因為它們比 SOAP API 更易於使用和採用。 此外,SOAP 還提供了 REST 所沒有的多種內置安全措施,儘管在使用開放數據和服務時不需要這些特徵。
- 構建移動應用程序:REST 非常適合構建移動應用程序,因為它體積小、有效、無狀態且可緩存。
- 利用稀缺的服務器資源和帶寬:對 REST API 的所有請求都必須是無狀態的,這意味著每次交互都是獨立的,並且每個請求和響應都包含完成該交互所需的所有數據。 服務器不會保存先前請求的記錄,因為它將每個請求都視為新請求。 因此,服務器需要的內存少得多,並且運行速度更快,因為請求不需要進一步的操作或檢索歷史數據。
何時使用 SOAP?
- 創建私有 API,特別是針對大型企業:SOAP 非常適合企業應用程序,因為它可以在分散的分佈式環境中實現數據流,並且包含多種在線安全功能。
- 使用HTTP以外的傳輸協議作為底層: SOAP 不依賴於 HTTP 作為底層。 根據您的應用程序,您可以使用 SMTP(簡單郵件傳輸協議)、JMS(Java 消息服務)或其他傳輸協議。
- 使用有狀態操作:與對 REST API 的請求相比,對 SOAP API 的請求是有狀態的,這意味著服務器保存有關客戶端的信息並在請求或操作鏈中使用它。 儘管這會使用更多的服務器帶寬和資源,但它對於執行常規或鏈接操作(例如銀行轉賬)至關重要。
結論
REST 和 SOAP API 之間的比較非常明顯地表明 REST 優於 SOAP。 儘管如此,在某些情況下還是需要 SOAP API。 在某些情況下,Web 服務是通過組合 REST 和 SOAP API 創建的。
因此,用例將決定哪種 API 風格最有效。
發表評論