GraphQL 快速入門【3】GraphQL 架構

【注】本文譯自:
https://www.tutorialspoint.com/graphql/graphql_quick_guide.htm
GraphQL - 架構
GraphQL 是描述 GraphQL 服務器行為的規(guī)范。它是一組關于如何處理請求和響應的指南,如支持的協(xié)議、服務器可以接受的數(shù)據(jù)格式、服務器返回的響應格式等??蛻舳讼?GraphQL 發(fā)出的請求服務器稱為查詢。GraphQL 的另一個重要概念是其傳輸層不可知性。它可以與任何可用的網(wǎng)絡協(xié)議一起使用,如 TCP、websocket 或任何其他傳輸層協(xié)議。它對數(shù)據(jù)庫也是中立的,因此您可以將它與關系數(shù)據(jù)庫或 NoSQL 數(shù)據(jù)庫一起使用。
可以使用下面列出的三種方法中的任何一種來部署 GraphQL Server:
帶有連接數(shù)據(jù)庫的 GraphQL 服務器
集成現(xiàn)有系統(tǒng)的 GraphQL 服務器
混合方法
集成連接數(shù)據(jù)庫的 GraphQL 服務器
這種架構有一個帶有集成數(shù)據(jù)庫的 GraphQL 服務器,通常可以用于新項目。收到查詢后,服務器讀取請求有效負載并從數(shù)據(jù)庫中獲取數(shù)據(jù)。這稱為解析查詢。返回給客戶端的響應遵循官方 GraphQL 規(guī)范中指定的格式。

在上圖中,GraphQL 服務器和數(shù)據(jù)庫集成在一個節(jié)點上。客戶端(桌面/移動)通過 HTTP 與 GraphQL 服務器通信。服務器處理請求,從數(shù)據(jù)庫中獲取數(shù)據(jù)并將其返回給客戶端。
GraphQL 服務器集成現(xiàn)有系統(tǒng)
這種方法對于擁有遺留基礎設施和不同 API 的公司很有幫助。GraphQL 可用于統(tǒng)一現(xiàn)有系統(tǒng)中的微服務、遺留基礎設施和第三方 API。

在上圖中,GraphQL API 充當客戶端和現(xiàn)有系統(tǒng)之間的接口??蛻舳藨贸绦蚺c GraphQL 服務器通信,后者反過來解析查詢。
混合方法
最后,我們可以將以上兩種方式結合起來,搭建一個 GraphQL 服務器。在這種架構中,GraphQL 服務器將解析收到的任何請求。它將從連接的數(shù)據(jù)庫或集成的 API 中檢索數(shù)據(jù)。這如下圖所示:
