2017-02-27 37 views
0

我再次看看graphql,並試圖理解爲什麼節省往返旅程對開發人員有利。請求的成本如此昂貴?我來自Web開發背景。Graphql和往返。這只是一個iOS應用程序問題?

讓我們比較標準rest api和graphql api。

我需要檢索用戶個人信息和他們的朋友列表。傳統的休息API可能需要2個電話,一個獲取個人信息,另一個獲取朋友。

使用graphql,我得到了一個請求相同的結果。

但是作爲一個前端開發者,我希望我的頁面有最短的停滯期。我想盡可能快地渲染頁面的一部分,而不是一次性等待我需要的所有信息然後渲染頁面。

現在從我的理解中,graphql部分是爲了解決移動應用程序API問題而創建的。是否有關於ios應用程序的一些信息,使其更有利於一次加載所有數據,而不是並行請求?還是還有別的東西我失蹤了?

回答

2

因此,一般來說,您所控制的系統內部的網絡流量(即,你的後端)很快。向外界請求205ms(200ms網絡,5ms數據)的請求在內部可能只需要6ms(1ms網絡,5ms數據)。

如果你想建立自己的應用程序的屏幕,並且需要做兩個REST請求,因爲第二個取決於第一個結果,你看(考慮到這些數字原油)410ms來獲得你需要渲染你的屏幕的數據。使用GraphQL(或合併數據的任何其他網關層),您可以將所有內容略微超過212毫秒(對於每個內部調用,GraphQL服務器的延遲時間爲200毫秒+ 6毫秒)。

在情況下,您可以讓所有並行的請求(即不依賴於其他請求的數據),性能優勢不是很明顯,但是你會發現,這些情況實際上是隨着應用程序複雜性的增長,這種情況非常罕見。

與GraphQL一般的經驗法則是,你的初始查詢獲取足夠的數據頁是功能性的,如果有,你可以隨時獲取與另一個查詢不太重要的內容。

除了性能優勢,讓移動設備使更少的網絡請求是一個巨大的勝利,當涉及到電池壽命。網絡使用費用很高,應儘可能地避免。

+0

謝謝,這正是我一直在尋找答案! – l2silver

1

使用,而不是REST API GraphQL前一個需要通過REST

GraphQL瞭解GraphQL的好處是一種查詢語言和 它使用您定義的類型系統GraphQLIntGraphQLStringcustomType ...

REST

  • 多次往返 - 慢
  • 超載數據
  • 許多端點

GraphQL

  • 1端點
  • 陳述句: 類型,查詢,突變你一個電話
  • 沒有underfetching,希望數據的
  • 確切形狀沒有數據的超取
  • query == result,更好的性能nce
+0

嘿pOk8,據我所知,這些都是一些graphql和休息之間的差異,但我還是不明白就是爲什麼越來越往返是一件壞事,如果這意味着獲得一些信息更快。 – l2silver

相關問題