2017-06-15 70 views
0

我一直在玩graphql。在graphQL之前,我們通常使用REST API。許多開發人員表示graphQL修復了REST的一些問題。 (例如,超額提取&)。我迷惑這個條款。什麼是過度抓取或抓取不足?

有人可以解釋什麼是在取回是這種情況下?

感謝,

回答

5

在取被取太多的數據,又名有在你不使用的數據效應初探。

通過對端點的調用,欠採樣的數據不足,從而導致您調用第二個端點。

在這兩種情況下,它們都是性能問題:您要麼使用比應該更多的帶寬,要麼發出更多的HTTP請求。

在一個完美的世界裏,這些問題永遠不會出現;您將擁有完全正確的端點,可以爲您的產品準確提供正確的數據。

當您對產品進行縮放和迭代時,經常會出現這些問題。 您在頁面上使用的數據通常會發生變化,並且爲每個組件準確維護一個單獨的端點所需的成本變得過高。

所以你最終要在沒有太多端點和讓端點適合最佳需求之間妥協。這在某些情況下會導致過度抓取(端點將提供您需要的特定組件所需的更多數據),而在其他情況下抓取不足(您需要調用第二個端點)。


因此,GraphQL修復了這個問題,因爲它允許訪問服務器公開的任意一組數據。您特別指定了您需要的內容,並且只需要一次訪問服務器就可以獲得這些數據,並且只能獲取這些數據。

0

簡單來說,過度抓取是您的查詢響應的額外數據不需要,即您發送的客戶端太多的數據,他們可能不需要,雖然低於正好相反,你收集更少的數據,因此客戶可能最終會丟失他們可能需要的重要信息。

使用graphQL,您可以得到與僅使用請求的字段執行的查詢完全相同的形狀的響應。