GraphQL Tutorial για αρχάριους: Τι είναι, Χαρακτηριστικά & Παράδειγμα
Τι είναι το GraphQL;
GraphQL είναι μια τεχνολογία επιπέδου εφαρμογής από την πλευρά του διακομιστή που έχει αναπτυχθεί από το Facebook για την εκτέλεση ερωτημάτων με υπάρχοντα δεδομένα. Το GraphQL μπορεί να βελτιστοποιήσει τις κλήσεις RESTful API. Παρέχει έναν δηλωτικό τρόπο ανάκτησης και ενημέρωσης των δεδομένων σας. Το GraphQL σάς βοηθά να φορτώνετε δεδομένα από διακομιστή σε πελάτη. Επιτρέπει στους προγραμματιστές να επιλέξουν τους τύπους αιτημάτων που επιθυμούν να υποβάλουν.
Γιατί να χρησιμοποιήσετε το GraphQL;
Ακολουθούν οι λόγοι χρήσης του GraphQL:
- Παρέχει ένα ερώτημα αναγνώσιμο από τον άνθρωπο.
- Στο GraphQL, είναι πολύ εύκολο να αντιμετωπίσετε πολλές βάσεις δεδομένων.
- Είναι κατάλληλο για μικροϋπηρεσίες και πολύπλοκα συστήματα.
- Μπορείτε να ανακτήσετε δεδομένα με μία κλήση API.
- Σας βοηθά με τη συγκέντρωση ερωτημάτων και την προσωρινή αποθήκευση.
- Δεν αντιμετωπίζετε προβλήματα κατά την ανάκτηση.
- Προσαρμογή αιτημάτων στις ανάγκες σας.
- Σας βοηθά να ανακαλύψετε το σχήμα στην κατάλληλη μορφή.
- Το GraphQL διατηρεί αυτόματα την τεκμηρίωση σε συγχρονισμό με τις αλλαγές API.
- Η εξέλιξη του API είναι δυνατή χωρίς έκδοση.
- Τα πεδία GraphQL χρησιμοποιούνται σε πολλαπλά ερωτήματα που μπορούν να κοινοποιηθούν σε υψηλότερο επίπεδο στοιχείων για επαναχρησιμοποίηση.
- Μπορείτε να επιλέξετε ποιες λειτουργίες θα εκθέσετε και πώς λειτουργούν.
- Μπορεί να χρησιμοποιηθεί για γρήγορη δημιουργία πρωτοτύπων εφαρμογών.
Εφαρμογές του GraphQL
Ακολουθούν οι σημαντικές εφαρμογές του GraphQL:
- Παρέχει Relay και άλλα πλαίσια πελάτη
- Το GraphQL σάς βοηθά να βελτιώσετε την απόδοση της εφαρμογής για κινητά.
- Μπορεί να μειώσει το πρόβλημα υπερβολικής λήψης σε χαμηλότερη υπηρεσία cloud από την πλευρά του διακομιστή και να μειώσει τη χρήση δικτύου από την πλευρά του πελάτη.
- Μπορεί να χρησιμοποιηθεί όταν η εφαρμογή-πελάτης πρέπει να καθορίσει ποια πεδία χρειάζονται σε μορφή μεγάλου ερωτήματος.
- Το GraphQL μπορεί να χρησιμοποιηθεί πλήρως όταν πρέπει να προσθέσετε λειτουργικότητα στο παλιό ή στο υπάρχον API σας.
- Χρησιμοποιείται όταν πρέπει να απλοποιήσετε πολύπλοκο API.
- Ανακατέψτε και πολτοποιήστε το μοτίβο πρόσοψης, το οποίο χρησιμοποιείται συνήθως στον αντικειμενοστραφή προγραμματισμό.
- Όταν πρέπει να συγκεντρώσετε δεδομένα από περισσότερα από ένα μέρη σε ένα βολικό API.
- Μπορείτε να χρησιμοποιήσετε το GraphQL ως αφαίρεση σε ένα υπάρχον API για να καθορίσετε τη δομή απόκρισης με βάση τις ανάγκες των χρηστών.
Τι πρέπει να μάθετε πριν μάθετε το GraphQl;
Αυτό το σεμινάριο GraphQL βασίζεται σε Εxpress και NodeJs. Επομένως, μπορείτε να μάθετε το GraphQL πολύ εύκολα με μια βασική κατανόηση του NodeJS.
Βασικά στοιχεία GraphQL
Τώρα σε αυτό το σεμινάριο GraphQL, ας μάθουμε τα βασικά στοιχεία του GraphQL:
Όπως φαίνεται στο παραπάνω σχήμα, υπάρχουν τρία βασικά στοιχεία του GraphQL: 1) Ερώτημα, 2) Επίλυση και 3) Σχήμα.
Απορία
Το ερώτημα είναι ένα αίτημα API που υποβάλλεται από την εφαρμογή υπολογιστή-πελάτη. Υποστηρίζει επαυξήσεις και δείχνει σε πίνακες. Το ερώτημα χρησιμοποιείται για ανάγνωση ή ανάκτηση τιμών.
Μέρη ερωτήματος:
Ακολουθούν τα σημαντικά μέρη του Query
- Πεδίο:
Ένα πεδίο απλώς υποδεικνύει ότι ζητάμε από τον διακομιστή συγκεκριμένες πληροφορίες. Ακολουθεί ένα παράδειγμα GraphQL ενός πεδίου στο ερώτημα graphQL.
query { team { id name } } "data": { "team":[ { "id": 1, "name": "Avengers" } , … ] } }
Στο παραπάνω παράδειγμα GraphQL, ζητάμε από τον διακομιστή το πεδίο που ονομάζεται ομάδα και τα υποπεδία του όπως id και όνομα. Ο διακομιστής GraphQL επιστρέφει δεδομένα που ζητήσαμε.
- Επιχειρήματα
In ΠΕΡΙΦΕΡΕΙΑ, μπορούμε να περάσουμε μόνο ένα σύνολο ορισμάτων ως τμήματα URL και παραμέτρους ερωτήματος. Για να αποκτήσετε ένα συγκεκριμένο προφίλ, μια τυπική κλήση REST θα έχει την εξής μορφή:
GET /api'team?id=2 Content-Type: application JSON { "id": 2, "name": "Justice League." }
αναλυτή
Οι επιλύτες παρέχουν τις οδηγίες για τη μετατροπή της λειτουργίας GraphQL σε δεδομένα. Επιλύουν το ερώτημα σε δεδομένα ορίζοντας συναρτήσεις επίλυσης.
Εμφανίζει στον διακομιστή τη διαδικασία καθώς και τη θέση για την ανάκτηση δεδομένων σύμφωνα με ένα συγκεκριμένο πεδίο. Το πρόγραμμα επίλυσης διαχωρίζει επίσης το σχήμα βάσης δεδομένων και το σχήμα API. Οι διαχωρισμένες πληροφορίες βοηθούν στην τροποποίηση του περιεχομένου που λαμβάνεται από τη βάση δεδομένων.
Schema
Ένα σχήμα GraphQL είναι το κέντρο της υλοποίησης του GraphQL. Περιγράφει τη λειτουργικότητα που είναι διαθέσιμη στους πελάτες που συνδέονται με αυτό.
Χαρακτηριστικά του GraphQL
Ακολουθούν σημαντικά χαρακτηριστικά του GraphQL:
- Παρέχει δηλωτική γλώσσα ερωτημάτων, η οποία δεν είναι επιτακτική.
- Είναι ιεραρχικό και προϊόν-κεντρικό.
- Το GraphQL πληκτρολογείται έντονα. Σημαίνει ότι τα ερωτήματα εκτελούνται στο πλαίσιο ενός συγκεκριμένου συστήματος.
- Τα ερωτήματα στο GraphQL κωδικοποιούνται στον πελάτη και όχι στον διακομιστή.
- Διαθέτει όλα τα χαρακτηριστικά του επιπέδου εφαρμογής του μοντέλου OSI.
Πελάτες GraphQL
Ο πελάτης GraphQL είναι ένας κώδικας που κάνει αιτήσεις POST σε σχετικό GraphQL Server. Μπορείτε να ρωτήσετε απευθείας ένα GraphQL API, αλλά η καλή προσέγγιση είναι να αξιοποιήσετε μια αποκλειστική βιβλιοθήκη πελατών χρησιμοποιώντας το Relay.
Αυτός ο διαλογισμός στα JavaΗ βιβλιοθήκη σεναρίων έχει αναπτυχθεί από το Facebook για τη δημιουργία εφαρμογών React με το GraphQL. Οι πελάτες GraphQL μπορεί να είναι ένα CMS όπως το Drupal, μια εφαρμογή μιας σελίδας, μια εφαρμογή για κινητά κ.λπ.
Διακομιστές GraphQL
Οι διακομιστές GraphQL είναι υλοποίηση της προδιαγραφής του GraphQL από την πλευρά του διακομιστή. Απεικονίζει τα δεδομένα σας ως GraphQL API, για το οποίο το πρόγραμμα-πελάτη σας μπορεί να ζητήσει βάσεις δεδομένων.
GraphQL Gateways
Το Gateway είναι ένα μοτίβο μικροϋπηρεσιών όπου μπορείτε να δημιουργήσετε μια ξεχωριστή υπηρεσία για να αντιμετωπίσετε άλλες υπηρεσίες υποστήριξης. Προσφέρει λειτουργική τεκμηρίωση και παρέχει έναν βολικό τρόπο συλλογής δεδομένων από περισσότερες από μία πηγές με ένα μόνο αίτημα.
Τι είναι η μεταβλητή στο GraphQL;
A Μεταβλητή στο GraphQL χρησιμοποιείται για να διαχωρίσει τις δυναμικές τιμές από το ερώτημα πελάτη και να μεταβιβάσει το ερώτημα ως μοναδικό λεξικό. Η μεταβλητή στο GraphQL μπορεί επίσης να χρησιμοποιηθεί για την επαναχρησιμοποίηση του ερωτήματος ή των μεταλλάξεων που γράφτηκαν από τον πελάτη με μεμονωμένα ορίσματα. Στο graphQL, δεν μπορείτε να μεταβιβάσετε δυναμικά ορίσματα απευθείας στη συμβολοσειρά ερωτήματος. Ο λόγος είναι ότι ο κώδικας από την πλευρά του πελάτη πρέπει να χειρίζεται δυναμικά τη συμβολοσειρά ερωτημάτων τη στιγμή που εκτελείτε το πρόγραμμα.
Το GraphQL έχει έναν καλό τρόπο να παραγοντοποιήσει τις δυναμικές τιμές από το ερώτημα. Τα περνάει ως ξεχωριστό λεξικό. Αυτές οι τιμές είναι γνωστές ως μεταβλητές. Κάθε φορά που εργαζόμαστε με μεταβλητές, πρέπει να κάνουμε τα ακόλουθα τρία πράγματα:
- Αντικαταστήστε τη στατική τιμή στο ερώτημα με ένα όνομα μεταβλητής.
- Δηλώστε το όνομα της μεταβλητής ως μία από τις μεταβλητές που γίνονται αποδεκτές από το ερώτημα GraphQL.
- Περάστε την τιμή στο λεξικό μεταβλητών που αφορά τη μεταφορά.
Δείτε πώς φαίνεται όλα μαζί:
query HeroNameAndFriends($episode: Episode) { hero(episode: $episode) { name friends { name } } } { "episode": "JEDI" } { "data": { "hero": { "name": "R2-D2", "friends": [ { "name": "Luke Skywalker" }, { "name": "Han Solo" }, { "name": "Leia Organa" } ] } } }
Όπως μπορείτε να δείτε στο παραπάνω παράδειγμα GraphQL, απλώς περάσαμε μια διαφορετική μεταβλητή εκτός από την ανάγκη κατασκευής ενός νέου ερωτήματος.
Τι είναι η μετάλλαξη;
Μια μετάλλαξη είναι ένας τρόπος αλλαγής του συνόλου δεδομένων στο GraphQL. Τροποποιεί τα δεδομένα στο χώρο αποθήκευσης δεδομένων και επιστρέφει μια τιμή. Οι μεταλλάξεις σάς βοηθούν να εισάγετε, να ενημερώσετε ή να διαγράψετε δεδομένα. Γενικά, οι μεταλλάξεις ορίζονται ως τμήμα σχήματος.
Σημεία που πρέπει να ληφθούν υπόψη κατά το σχεδιασμό μεταλλάξεων GraphQL
Ακολουθούν τα σημαντικά σημεία κατά το σχεδιασμό του GraphQL:
- Ονομασία: Πρώτα απ 'όλα, πρέπει να ονομάσετε το ρήμα των μεταλλάξεων σας. Στη συνέχεια, το ουσιαστικό ή το "αντικείμενο" εάν ισχύει. Χρησιμοποιήστε το camelCase κατά την ονομασία μεταλλάξεων.
- Ειδικότητα: Πρέπει να κάνετε τη μετάλλαξη όσο το δυνατόν περισσότερο. Οι μεταλλάξεις θα πρέπει να αντιπροσωπεύουν σημασιολογικές ενέργειες που γίνονται από τον χρήστη.
- Αντικείμενο εισαγωγής: Χρησιμοποιήστε έναν, μοναδικό, απαιτούμενο, τύπο αντικειμένου εισόδου ως όρισμα για την εκτέλεση μετάλλαξης στον πελάτη.
- Μοναδικός τύπος ωφέλιμου φορτίου: Θα πρέπει να χρησιμοποιείτε έναν μοναδικό τύπο ωφέλιμου φορτίου για κάθε μετάλλαξη. Μπορείτε επίσης να προσθέσετε την έξοδο μετάλλαξης ως πεδίο σε αυτόν τον συγκεκριμένο τύπο ωφέλιμου φορτίου.
- Φωλιασμός: Χρησιμοποιήστε την ένθεση στη μετάλλαξή σας όπου έχει νόημα. Σας επιτρέπει να χρησιμοποιήσετε πλήρως το GraphQL API.
Διαφορά μεταξύ GraphQL και REST
Ο παρακάτω πίνακας δείχνει σημαντική διαφορά μεταξύ GraphQL και REST.
GraphQL | ΠΕΡΙΦΕΡΕΙΑ |
---|---|
Ακολουθεί την αρχιτεκτονική που βασίζεται στον πελάτη. | Ακολουθεί την αρχιτεκτονική που βασίζεται σε διακομιστή. |
Το GraphQL μπορεί να οργανωθεί με όρους σχήματος. | Το REST μπορεί να οργανωθεί ως προς τα τελικά σημεία. |
Το GraphQL είναι μια αναπτυσσόμενη κοινότητα. | Το REST είναι μια πολύ μεγάλη κοινότητα. |
Η ταχύτητα ανάπτυξης στο GraphQL είναι γρήγορη. | Η ταχύτητα ανάπτυξης στο REST είναι αργή. |
Η καμπύλη μάθησης στο GraphQL είναι δύσκολη. | Η καμπύλη μάθησης στο REST είναι μέτρια. |
Η ταυτότητα διαχωρίζεται από το πώς την φέρνεις. | Το τελικό σημείο που καλείτε στο REST είναι η ταυτότητα ενός συγκεκριμένου αντικειμένου. |
Στο GraphQL, ο διακομιστής καθορίζει τους διαθέσιμους πόρους. | Το σχήμα και το μέγεθος του πόρου καθορίζεται από τον διακομιστή στο REST. |
Το GraphQL παρέχει υψηλή συνέπεια σε όλες τις πλατφόρμες. | Είναι δύσκολο να επιτευχθεί συνέπεια σε όλες τις πλατφόρμες. |
Μειονεκτήματα του GraphQL
Ακολουθούν τα μειονεκτήματα του GraphQL:
- Νέο οικοσύστημα
- Έλλειψη πόρων στο τμήμα backend.
- Λείπει το σχέδιο σχεδίασης για μια σύνθετη εφαρμογή.
- Ζητήματα απόδοσης με πολύπλοκα ερωτήματα.
- Υπερβολή για μικρές εφαρμογές
- Το GraphQL δεν εξαρτάται από τις μεθόδους προσωρινής αποθήκευσης HTTP που επιτρέπουν την αποθήκευση περιεχομένου αιτήματος.
- Το GraphQL δεν κατανοεί αρχεία. Ως εκ τούτου, μια δυνατότητα μεταφόρτωσης αρχείων δεν περιλαμβάνεται σε αυτήν.
- Με το GraphQL, να είστε έτοιμοι να έχετε πολλή εκπαίδευση πριν από την ανάπτυξη, όπως η εκμάθηση της γλώσσας ορισμού σχήματος.
Εφαρμογές και εργαλεία ανοιχτού κώδικα που χρησιμοποιούνται από το GraphQL
Οι σημαντικές εφαρμογές και εργαλεία ανοιχτού κώδικα που χρησιμοποιεί η GraphQL είναι οι εξής:
- Γκάτσμπι: Το Gastby είναι μια εφαρμογή που υποστηρίζεται από το GraphQL που μπορεί να χρησιμοποιήσει δεδομένα που προέρχονται από περισσότερες από μία πηγές API του GraphQL. Μπορείτε να το χρησιμοποιήσετε για να αναπτύξετε μια στατική εφαρμογή React που βασίζεται σε πελάτες.
- GraphiQL: Είναι ένα αναγνωριστικό που ενσωματώνεται με το πρόγραμμα περιήγησης και επίσης αλληλεπιδρά με το API του GraphQL. Μερικές από τις λειτουργίες που περιλαμβάνει το GraphiQL είναι οι μεταλλάξεις, η αναζήτηση δεδομένων και τα ερωτήματα αυτόματης συμπλήρωσης.
- GraphQL Playground: Είναι ένα ισχυρό IDE που διαθέτει ενσωματωμένο πρόγραμμα επεξεργασίας για το χειρισμό μεταλλάξεων, επικύρωσης, ερωτημάτων GraphQl, συνδρομών κ.λπ. Ο προγραμματιστής μπορεί να χρησιμοποιήσει αυτό το IDE για να οπτικοποιήσει τη δομή του σχήματος.
- Πρίσμα: Το Prisma είναι ένα επίπεδο αφαίρεσης βάσης δεδομένων που μετατρέπει τις βάσεις δεδομένων σας σε GraphQL API με λειτουργίες CRUD (Δημιουργία, Ανάγνωση, Ενημέρωση και Διαγραφή).
- Κομμάτι: Είναι εργαλείο και πλατφόρμα ανοιχτού κώδικα που μετατρέπει τον επαναχρησιμοποιήσιμο κώδικα σε στοιχεία. Οι προγραμματιστές μπορούν να τα χρησιμοποιήσουν για να μοιράζονται και να αναπτύσσουν διάφορα έργα.
Σύνοψη
- Το GraphQL είναι μια τεχνολογία επιπέδου εφαρμογής από την πλευρά του διακομιστή που έχει αναπτυχθεί από το Facebook για την εκτέλεση ερωτημάτων με υπάρχοντα δεδομένα.
- Μπορείτε να χρησιμοποιήσετε το GraphQL για να ανακτήσετε δεδομένα με μία κλήση API.
- Το GraphQL σάς βοηθά να βελτιώσετε την απόδοση της εφαρμογής για κινητά.
- Σημαντικά στοιχεία ερωτήματος GraphQL είναι: 1) Ερώτημα, 2) Επίλυση, 3) Σχήμα.
- Το GraphQL πληκτρολογείται έντονα. Σημαίνει ότι τα ερωτήματα εκτελούνται στο πλαίσιο ενός συγκεκριμένου συστήματος.
- Ο πελάτης GraphQL είναι ένας κώδικας που κάνει αιτήσεις POST σε σχετικό GraphQL Server.
- Οι διακομιστές GraphQL είναι υλοποίηση της προδιαγραφής του GraphQL από την πλευρά του διακομιστή.
- Το Gateway είναι ένα μοτίβο μικροϋπηρεσιών όπου μπορείτε να δημιουργήσετε μια ξεχωριστή υπηρεσία για να αντιμετωπίσετε άλλες υπηρεσίες υποστήριξης.
- Το GraphQL έχει έναν καλό τρόπο να παραγοντοποιήσει τις δυναμικές τιμές από το ερώτημα.
- Μια μετάλλαξη είναι ένας τρόπος αλλαγής του συνόλου δεδομένων στο GraphQL.
- Τα σημαντικά σημεία κατά τη σχεδίαση του GraphQL είναι: 1) Ονομασία, 2) Ειδικότητα, 3) Αντικείμενο εισαγωγής Μοναδικός τύπος ωφέλιμου φορτίου και 4) Ένθεση.
- Το GraphQL μπορεί να οργανωθεί με όρους σχήματος, ενώ το REST μπορεί να οργανωθεί ως προς τα τελικά σημεία.
- Το μειονέκτημα του GraphQL είναι ότι δεν διαθέτει πόρους στο τμήμα υποστήριξης.