為什麼要使用GraphQL?

2021-10-08 04:33:59 字數 1995 閱讀 3850

正如我之前所寫, graphql是下一代api技術,它正在改變客戶端應用程式與後端系統的通訊方式以及後端系統的設計方式。

由於從建立它的組織facebook開始獲得支援,並得到其他技術巨頭(如github,twitter和airbnb)的支援,因此graphql作為應用程式系統關鍵技術的地位似乎是可靠的; 無論現在還是將來。

移動應用程式效能和組織敏捷性重要性的提高為graphql登上現代企業體系結構的頂端提供了助推器。

鑑於rest是一種非常流行的體系結構樣式,已經允許進行資料互動的機制,與rest相比,這項新技術具有哪些優勢? graphql中的「 ql」代表查詢語言,這是乙個很好的起點。

借助graphql,企業中的不同客戶端應用程式可以輕鬆地僅查詢所需資料,從而取代了其他rest方法,並提高了實際應用程式的效能。 使用傳統的rest api端點,客戶端應用程式可以查詢伺服器資源,並接收包含與請求匹配的所有資料的響應。 如果來自rest api端點的成功響應返回35個字段,則客戶端應用程式將接收35個字段

傳統上, rest api無法為客戶端應用程式提供唯一的方法來僅檢索或更新他們關心的資料。 通常將其描述為「過度獲取」問題。 隨著移動應用在人們的日常生活中的普遍使用,過度獲取問題產生了現實世界的後果。 移動應用程式需要發出的每個請求,以及它必須傳送和接收的每個位元組,對終端使用者的效能影響越來越大。 資料連線速度較慢的使用者尤其會受到次優api設計選擇的影響。 使用移動應用程式效能不佳的客戶更有可能不購買產品或使用服務。 低效的api設計使公司付出了金錢。

並非只有「過度獲取」-它在犯罪方面有夥伴-「欠獲取」。 預設情況下,僅返回客戶端實際需要的部分資料的端點要求客戶端進行其他呼叫以滿足其資料需求-這需要其他http請求。 由於獲取過多和獲取不足的問題及其對客戶端應用程式效能的影響,促進有效獲取的api技術有機會在市場上引起轟動-graphql大膽地介入並填補了這一空白。

rest api設計人員不願無休止地失敗,他們嘗試通過以下多種方式來應對移動應用程式效能問題:

儘管這些模式是rest api社群為解決移動客戶端所面臨的挑戰而做出的英勇嘗試,但它們在以下幾個關鍵方面沒有實現:

對於facebook而言,graphql的起源是對疼痛感和體驗的回應,這些疼痛感和體驗是從其旗艦移動應用程式基於html5的版本(2011-2023年)中學到的。 facebook工程師意識到提高效能至關重要,因此意識到他們需要一種新的api設計來確保最佳效能。 可能考慮到以上rest限制,並需要支援許多api客戶端的不同需求,因此人們可以開始了解當時共同建立者lee byron和dan schaeffer(facebook員工)的早期種子。建立被稱為graphql的東西。

使用通常是單個graphql端點的客戶端,通過graphql查詢語言,客戶端應用程式能夠(通常)顯著減少所需的網路呼叫數量,並確保僅檢索所需的資料。 在許多方面,這可以追溯到早期的web程式設計模型,在該模型中,客戶端應用程式**將直接查詢後端系統-例如,有些人可能還記得10到15年前在jssp上用jstl編寫sql查詢!

現在最大的區別在於graphql,我們有乙個規範可以在各種客戶端和伺服器語言以及庫中實現。 由於graphql是一種api技術,我們通過引入中間的graphql應用程式層來分離後端和前端應用程式系統,該層提供了一種以與組織的業務領域相一致的方式訪問組織資料的機制。

除了解決軟體工程團隊遇到的技術挑戰之外,graphql還促進了組織敏捷性的提高,特別是在企業中。 啟用graphql的組織敏捷性通常歸因於以下因素:

儘管graphql具有引人注目的優勢,但graphql仍然面臨著實施挑戰。 一些示例包括:

通過同時提高效能和組織敏捷性,graphql在公司中的採用在過去幾年中猛增。 但是,與restful api設計生態系統相比,它確實有一些成熟的工作。

graphql的一大優點是,它並不是作為替代api解決方案的批發替代品而設計的。 相反,可以實現graphql來補充或增強現有的api。 因此,鼓勵公司探索逐步採用graphql的方法,使之對他們最有意義-他們發現它對應用程式效能和組織敏捷性具有最大的積極影響。

翻譯自:

為什麼要使用blog

有哥們問我,你為什麼使用blog?我總結了一下,覺得有如下幾個原因。1對自己的督促 有了blog,就會經常記得寫點東西 就會經常翻翻網上的新文章,了解一下新技術,不至於迷失在忙碌的生活中 如果把自己的所感所想所學寫出了,自己對自己也會有個概念,不至於迷迷糊糊 還有,畢竟是掛在網上的文字,心中難免擔心...

為什麼要使用XML

xml 代表擴充套件標記語言 extensible markup language 是由 world wide web consortium w 3c 的 xml工作組定義的。這個工作組是這樣描述該語言的 擴充套件標記語言 xml 是 sgml 的子集,其目標是允許普通的 sgml 在web 上以目...

為什麼要使用Nginx?

有人說這些基準測試是不準確的,因為在這樣那樣的環境下,做的比較不一致。我傾向同意基準測試只是告訴了我們其中一部分情況,你能做的是消除偏見 有人見過所有人都同意乙個基準測試是公平的嗎?我是沒見過。我們投資的一些公司把web平台切換到nginx後,可以顯著的解決擴充套件問題。nginx明顯有效的實現了今...