導讀:在這份學習指南中,我們將和大家一起了解 REST、GraphQL 和異步 API 的優缺點,以及這三種技術在現實生活中的理想用例。

API 在現代軟件開發領域在發揮著舉足輕重的作用。

目前,有三種主流類型的API,可用于在各個系統之間建立通信與數據交換。最前沿最流行是 REST 方法,這種方法因其簡單和可擴展性,已經在行業中占據主導地位。

伴隨著技術的發展,開發者與企業的需求也發生著變化。近年來,由Facebook開源的 GraphQL 和異步事件驅動 API 等替代方案也開始出現。與傳統的 REST API 相比,它們具有更明顯的優勢。

在本文中,我們將詳細研究每種 API 技術,并將它們做比較和展開理解,希望對感興趣的小伙伴有些許幫助。

REST:面向資源的通信的開始

REST 架構圍繞實體資源的概念展開。這些實體可通過標準 HTTP 方法進行管理,

例如 GET、POST、PUT 和 DELETE。

REST 的關鍵特征之一就是無狀態,其中來自客戶端的每個請求都包含服務器完成該請求所需的所有信息。


這種方法可以將客戶端和服務器解耦,彼此可以獨立擴展。

REST 的優點與缺點

很明顯,REST API 具有如下的一些優勢:

當然,REST架構也存在一些缺點:

REST API 的用例

REST API 在如下用例中適合,以下我們舉例說明:

GraphQL:進行聲明式數據獲取API的興起

GraphQL 是用于查詢數據的開源語言以及用于完成這些查詢的運行時的組合。

GraphQL 背后的關鍵原則是采用分層結構來定義數據查詢,讓客戶端在單個請求中精確指定所需的數據。

圖 2?GraphQL 架構概覽

在很多方面,GraphQL 都是對 REST API 架構相關問題的直接對應。?

而且它還促進了API的強類型模式,為開發者提供了更清晰的預期。在技術改良方法,GraphQL 通過訂閱方式支持實時數據更新。

經過多年的發展,創始者 Facebook以及眾多生態公司,比如在 GraphQL Federation 等工具上進行了大量工作,從而使 GraphQL API 對于多個領域的大型企業系統具備更良好的可擴展性。

GraphQL 的優點與缺點

GraphQL 提供給開發者們如下一些關鍵優勢:

GraphQL 也有它的缺點,包括如下的幾點:

GraphQL 的相關用例

與 REST API 相比,GraphQL 在某些特定場合中表現的更好。例如:

異步 API:向事件驅動架構的轉變

近些年來,采用或遷移到云原生架構的推動催生了事件驅動架構,其優點是組件之間無阻塞通信的良好前景。

使用異步 API,客戶端無需等待響應即可繼續操作,也就是可以發送請求的同時繼續執行過程。

這種方法對于需要高并發性、可擴展性和響應性的場景是非常有利的。

在事件驅動的系統中,異步 API 在Apache Kafka或RabbitMQ等工具的幫助下處理事件和消息,這些技術提供了消息生產者和消費者之間的通信媒介。

典型使用事件驅動 API 方法的系統原理,先讓生產者將事件發布到主題,而消費者訂閱這些主題,用以異步接收和處理事件。這樣允許無縫的可擴展性和容錯能力,因為生產者和消費者都可以獨立發展。

下圖就向大家展示了這樣一個系統:

圖 3 具有 Kafka 和異步 API 的事件驅動系統

異步 API 的優點與缺點

異步 API 有如下的關鍵優勢:

如同其它 API 類型一樣,異步 API 也存在以下幾個缺點:

異步 API 的典型用例

REST 和 GraphQL API 兩種API類型相比,異步 API 也有一些合適的理想用例,包括如下:

REST、GraphQL 和異步 API 的綜合比較

前面我們已經詳細研究了三種類型的 API 架構。現在是時候對它們進行并排綜合比較了,以便大家在開發前做出更好的決策與選擇。

下表顯示了三種類型幾個關鍵參數的比較:

表 1 比較 REST、GraphQL 與異步 API

范圍REST APIGraphQL API異步API
數據獲取方式使用預定義節點獲取數據客戶在查詢中指定確切的數據要求數據以異步消息的形式傳遞
性能和可擴展性非常適合可擴展的應用;可能會遇到過度獲取和獲取不足的問題可擴展;嵌套查詢可能會出現問題高度可擴展;高效的實時數據處理
靈活性和易用性查詢數據的靈活性有限數據查詢靈活性高查詢數據的靈活性有限,需要了解事件驅動的方法
開發者經驗和學習曲線資料完善且為許多開發者所熟悉理解 GraphQL 語法的學習曲線適中更陡峭的學習曲線
實時能力實時功能有限,依賴輪詢和 Webhooks 等關聯技術進行更新通過訂閱實現實時功能專為實時數據處理而設計;非常適合流媒體實時應用
工具和生態系統支持豐富的工具和生態系統支持不斷發展的生態系統需要專門的工具,例如 RabbitMQ 或 Kafka 等消息傳遞平臺

結語

在本文中,我們共同探討了不同 API 架構之間的主要區別,分別是:REST、GraphQL 與異步 API。

此外,還詳解了特定類型的 API 可能比其它類型更適合的場景。

展望未來,API 開發格局有望進一步轉型,包括機器學習、邊緣計算和物聯網等新興技術將推動新的需求,從而推動 API 方法的更快發展。此外,隨著分布式系統的高速發展和升級,API 將在通信方面發揮更關鍵與重要作用。

作為開發者,了解每種 API 樣式的優點和局限性并選擇最適合給定需求的方法非常重要。

這樣的心態,可以幫助我們充滿信心地駕馭當下的 API 領域。

本文章轉載微信公眾號@21CTO

上一篇:

大規模分布式架構中,怎樣設計和選擇 API 限流技術?

下一篇:

FastAPI-Cache2:一個讓接口飛起來的緩存神器
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費