Πήγαινε στο κύριο περιεχόμενο

Τι Είναι το Overfetching;

Στη ρίζα του γιατί οι άνθρωποι προτείνουν το GraphQL βρίσκεται μια έννοια που ονομάζεται overfetching. Σε πολλές APIs, όταν ζητάτε πληροφορίες για ένα αντικείμενο, η API επιστρέφει όλα όσα γνωρίζει, επειδή δεν ξέρει τι σας ενδιαφέρει. Το GraphQL (όπως και το SQL) σας επιτρέπει να πείτε συγκεκριμένα στην API τι ψάχνετε πριν κάνει το ερώτημα.

Είναι σαν να μπαίνετε σε ένα εστιατόριο και να ζητάτε να σας φέρουν όλα τα πιάτα του μενού στο τραπέζι, και μετά να επιλέγετε το ορεκτικό, το κυρίως πιάτο και το επιδόρπιο. Τα υπόλοιπα χάνονται.

Ένα Πρακτικό Παράδειγμα

Σκεφτείτε ένα ερώτημα από μια φανταστική εφαρμογή για σερβιτόρους χειρός:

query foodPricesForOrder {
menuItem(id: "Jxkjahdkfh==") {
id
description
longDescription
calories
price
picture
}
}

Τι θα γινόταν αν παραλείπαμε το longDescription; Θα εξοικονομούσαμε κυκλοφορία δικτύου, αν και το ίδιο το ερώτημα βάσης δεδομένων δεν θα ήταν αισθητά πιο γρήγορο αν όλα τα πεδία βρίσκονται στον ίδιο πίνακα.

Αλλά προσέξτε το πεδίο picture — θα μπορούσε να είναι μια εικόνα κωδικοποιημένη σε base64. Δεν τη θέλουμε σε μια εφαρμογή για σερβιτόρους χειρός. Στο REST, δεν θα είχαμε άλλη επιλογή παρά να τη λάβουμε, ή ο προγραμματιστής της API θα έπρεπε να δημιουργήσει ξεχωριστό endpoint για τις εικόνες. Χειρότερα, η λύση REST μπορεί να αναγκάσει τον πελάτη να κάνει ξεχωριστά αιτήματα για κάθε πιάτο.

Πώς Λύνει Αυτό το GraphQL

Το GraphQL σας επιτρέπει να ζητάτε μόνο ό,τι χρειάζεστε. Αν ένας resolver είναι συνδεδεμένος με το πεδίο picture (στο AppSync, Apollo ή όποιον GraphQL server), ενεργοποιείται μόνο όταν το πεδίο αυτό εμφανίζεται στο ερώτημα. Όσο δεν το συμπεριλαμβάνετε, δεν πληρώνετε το κόστος του.

Αυτό ισχύει σε όλο το Legalesign API. Τα πεδία που απαιτούν ακριβά ερωτήματα — σχετιζόμενα αντικείμενα, υπολογιζόμενες τιμές, μεγάλα φορτία — επιλύονται μόνο όταν τα ζητάτε.

Το Μήνυμα

Όταν σχεδιάζετε τα ερωτήματά σας, σκεφτείτε ποιες πληροφορίες χρειάζεστε πραγματικά. Απορρίψτε οτιδήποτε δεν χρησιμοποιεί το UI σας. Θα μειώσετε το μέγεθος του φορτίου, τη χρονική καθυστέρηση δικτύου και τον υπολογισμό στην πλευρά του server.

Δείτε Σχεδιασμός Ερωτημάτων για περισσότερες πρακτικές οδηγίες.

Export This Article

Save a copy of this page as PDF or plain text.