GraphQL: Μια εναλλακτική λύση στο REST στο HTTP

GraphQL: Μια εναλλακτική λύση στο REST στο HTTP

Υπάρχουν πολλά αρχιτεκτονικά πρότυπα ανοιχτού κώδικα για την κατασκευή και τη διανομή εφαρμογών. Τα API REST (Representational State Transfer), SOAP (πρωτόκολλο πρόσβασης απλού αντικειμένου), RPC (Remote Procedural Call) και GraphQL είναι τα πιο δημοφιλή.





Τα RESTful API είναι το πιο χρησιμοποιούμενο αρχιτεκτονικό πρότυπο API. Εάν έχετε γράψει σύνθετα RESTful API με πολλά τελικά σημεία, πιθανότατα έχετε συνειδητοποιήσει πόσο περίπλοκα μπορεί να είναι. Αυτό ισχύει ιδιαίτερα εάν υπάρχουν μόνο μικρές διαφορές μεταξύ των τελικών σημείων.





ΚΑΤΑΣΚΕΥΗ ΒΙΝΤΕΟ ΤΗΣ ΗΜΕΡΑΣ

Μπορεί επίσης να αντιμετωπίσετε προβλήματα με την ανάκτηση δεδομένων, καθώς τα RESTful API δεν είναι αρκετά ευέλικτα για την επιλογή συγκεκριμένων δεδομένων. Το GraphQL επιλύει αυτά τα προβλήματα των RESTful API.





Τι είναι το GraphQL;

Η GraphQL (Graph Query Language) είναι μια γλώσσα ερωτημάτων και χρόνος εκτέλεσης για τη δημιουργία API. Σε αντίθεση με τα API REST με πολλά τελικά σημεία για κατανάλωση δεδομένων, τα GraphQL API έχουν ένα σημείο εισόδου. Μπορείτε να λάβετε συγκεκριμένα δεδομένα περιγράφοντάς τα σε ερωτήματα.

ο Προδιαγραφή GraphQL καθορίζει τη γλώσσα ερωτήματος και τον τρόπο λειτουργίας των διακομιστών GraphQL. Μπορείτε να δημιουργήσετε και να καταναλώσετε GraphQL API σε γλώσσες διακομιστή από την Python έως Javascript και οποιαδήποτε γλώσσα υποστηρίζει HTTP.



Η Meta δημιούργησε το GraphQL το 2012 ως εναλλακτική λύση στο REST για δημιουργία σε HTTP. Κυκλοφόρησαν το GraphQL ως πρότυπο ανοιχτού κώδικα το 2015. Σήμερα, το ίδρυμα GraphQL επιβλέπει την ανάπτυξη της προδιαγραφής GraphQL.

Το GraphQL είναι αρκετά νέο, με χαμηλή υιοθέτηση και υπάρχει κρυφό κόστος για τη χρήση του. Η δημιουργία GraphQL API μπορεί να είναι άσκοπα πολύπλοκη, ειδικά για μικρά έργα με λίγα τελικά σημεία.





Επίσης, όλα τα αιτήματα GraphQL επιστρέφουν τελικά έναν κωδικό κατάστασης 200 ανεξάρτητα από την κατάσταση του αιτήματος.

Πώς λειτουργεί το GraphQL;

  GraphQL's functions and syntax

Διαφορετικός REST, το οποίο είναι προσανατολισμένο στους πόρους , το GraphQL απαιτεί να σκέφτεστε τα δεδομένα ως γράφημα για να αλληλεπιδράσετε με τα δεδομένα. Μπορείτε να καθορίσετε τη δομή των δεδομένων και η προδιαγραφή παρέχει μια ισχυρή διεπαφή ερωτήματος για αλληλεπίδραση με το API μέσω HTTP. Θα μπορείτε να χρησιμοποιήσετε διάφορες λειτουργίες ανάλογα με το Πακέτο ή βιβλιοθήκη GraphQL επιλέγετε να χρησιμοποιήσετε.





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

Γιατί πρέπει να χρησιμοποιήσετε το GraphQL;

Το REST είναι ένα εύχρηστο πρότυπο και οι περισσότερες γλώσσες προγραμματισμού διαθέτουν εργαλεία για γρήγορη δημιουργία RESTful API. Ωστόσο, υπάρχουν πολλά προβλήματα με τη δημιουργία και την κατανάλωση RESTful API.

Ακολουθούν ορισμένα από τα προβλήματα με το REST που κάνουν τους προγραμματιστές να προτιμούν το GraphQL για ορισμένες περιπτώσεις χρήσης.

μπλε οθόνη ελαττωματικό υλικό κατεστραμμένη σελίδα

Αναποτελεσματική Ανάκτηση Δεδομένων

Τα RESTful API αναμεταδίδουν δεδομένα με βάση τις προδιαγραφές του τελικού σημείου. Δεν είναι αρκετά ευέλικτα ώστε να ανακτούν δεδομένα πέρα ​​από αυτά που είναι κωδικοποιημένα στη λειτουργία χειριστή του τελικού σημείου.

Ας υποθέσουμε ότι ένα τελικό σημείο επιστρέφει μια λίστα δεδομένων κατά την κλήση και πρέπει να καθορίσετε τιμές ή κριτήρια για πεδία. Σε αυτήν την περίπτωση, ο προγραμματιστής πρέπει να δημιουργήσει ένα τελικό σημείο και να ορίσει την επιχειρηματική λογική για να επιστρέψει τα δεδομένα. Μπορείτε να αναλύσετε τον πολύτιμο πόρο με μη αυτόματο τρόπο, κάτι που τελικά απαιτεί περισσότερο χρόνο.

Το GraphQL επιλύει το ζήτημα της αναποτελεσματικής ανάκτησης δεδομένων, καθώς μπορείτε να υποβάλετε ερωτήματα στα API για να επιστρέψουν δεδομένα με βάση κριτήρια και προδιαγραφές με ευελιξία.

Τα GraphQL API είναι διαδραστικά. μπορείτε να καθορίσετε τα δεδομένα που χρειάζεστε για να ανακτήσετε με μια εύκολη, ευανάγνωστη σύνταξη.

{ 
user(where: {age: {_eq: "89"}}) {
name
school(where: {alive: {_eq: true}}) {
bio
nationality
}
}
}

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

Ταχεία ανάπτυξη

Η δημιουργία και η κατανάλωση GraphQL API είναι ευκολότερη από τη χρήση REST, ειδικά καθώς αυξάνεται το μέγεθος του έργου. Κατά τη φάση ανάπτυξης, δεν χρειάζεται να αναπτύξετε τόσες πολλές διαδρομές και λειτουργίες χειριστή όσες θα κάνετε κατά την ανάπτυξη RESTful API. Η κατανάλωση GraphQL API δεν είναι τόσο κουραστική όσο τα RESTful API.

Στο REST, διαφορετικά τελικά σημεία παρέχουν πρόσβαση σε διαφορετικούς πόρους, σε αντίθεση με το GraphQL, όπου υπάρχει ένα μόνο τελικό σημείο. Αυτό αποδίδει ευελιξία και απόδοση και τα ερωτήματα μπορούν να καλούν διαφορετικές συναρτήσεις επίλυσης.

Η γλώσσα ορισμού σχήματος GraphQL

Η Γλώσσα ορισμού σχήματος GraphQL (SDL) καθορίζει τα σχήματα για τις υπηρεσίες GraphQL.

Το usb συνεχίζει να αποσυνδέει και να επανασυνδέει τα παράθυρα 10

Η σύνταξη GraphQL SDL είναι εύκολο να διαβαστεί και να κατανοηθεί. Θα καθορίσετε τη δομή του σχήματός σας σε ένα αρχείο με το .graphql ή .graphqls επέκταση.

type Human { 
name: String!
age: Int!
}

input AddHuman {
name: String!
age: Int!
}

type Mutation {
CreateHuman(input: AddHuman!): Human!
DeleteHuman(id: Int!): String!
UpdateHuman(id: Int!): String!
}

type Query {
GetHuman(id: Int!): Human!
GetHumans: [Human!]!
}

Ο παραπάνω κώδικας GraphQL είναι το σχήμα για ένα GraphQL API που ορίζει τη δομή του API για αιτήματα. Το σχήμα ορίζει τη λειτουργικότητα CRUD για το API.

Από την πλευρά του πελάτη, με βάση τη δομή του σχήματος και τα δεδομένα ή τη λειτουργία του πελάτη, ο πελάτης μπορεί να εκτελέσει ένα ερώτηση (ΛΗΨΗ ή ΔΙΑΓΡΑΦΗ σε REST) ​​ή α μετάλλαξη (ΒΑΣΗ ή ΑΝΑΡΤΗΣΗ).

Ακολουθεί ένα παράδειγμα ερωτήματος για το Ο άνθρωπος σχήμα.

query Human { 
name
age
}

Το παραπάνω ερώτημα θα επέστρεφε τα ανθρώπινα σχήματα όνομα και ηλικία δεδομένα πεδίου.

Οι μεταλλάξεις GraphQL έχουν μια αρκετά διαφορετική σύνταξη σε αντίθεση με τα ερωτήματα. Ακολουθεί ένα παράδειγμα λειτουργίας μετάλλαξης στο Ο άνθρωπος σχήμα.

mutation { 
CreateHuman(input:{ name:"man", age:1000000000000000,}) {
name
age
}
}

Εισάγει τον κωδικό μετάλλαξης όνομα και ηλικία πεδία στον πελάτη και επιστρέφει τα δεδομένα από τα πεδία.

Θα χρειαστείτε ένα χώρο αποθήκευσης δεδομένων για επιμονή όταν δημιουργείτε το GraphQL API σας. Όπως το REST και οι περισσότερες αρχιτεκτονικές ιστού που βασίζονται σε HTTP, το GraphQL είναι ανύπαρκτο και μπορείτε να χρησιμοποιήσετε οποιοδήποτε χώρο αποθήκευσης δεδομένων ή βάση δεδομένων για την εφαρμογή σας.

Δημιουργία GraphQL API

  Υποστηριζόμενες γλώσσες GraphQL

Το GraphQL είναι μια προδιαγραφή και μπορείτε να δημιουργήσετε το GraphQL στις πιο δημοφιλείς γλώσσες του διακομιστή. Θα πρέπει να βρείτε μια βιβλιοθήκη με τις δυνατότητες που χρειάζεστε για το έργο σας.

Όταν επιλέγετε μια βιβλιοθήκη GraphQL, θέλετε να χρησιμοποιήσετε μια βιβλιοθήκη πλούσια σε χαρακτηριστικά που υποστηρίζει όλους τους τύπους και τις λειτουργίες GraphQL. Οι περισσότερες βιβλιοθήκες ακολουθούν είτε μια προσέγγιση με πρώτο σχήμα είτε με πρώτο κώδικα. Στο πρώτο, ορίζετε ένα σχήμα GraphQL και η βιβλιοθήκη δημιουργεί αναλυτές και κώδικα boilerplate. Για το τελευταίο, κωδικοποιείτε σκληρά τους αναλυτές χωρίς να ορίζετε ένα σχήμα.

Το GraphQL κερδίζει την υιοθέτηση

Από την έναρξη του GraphQL, προγραμματιστές και εταιρείες έχουν κυκλοφορήσει εργαλεία για να απλοποιήσουν τη χρήση του. Αυτά μπορούν να μειώσουν τον χρόνο ανάπτυξης για μικρότερα και μεσαία έργα.

Μπορείτε να ελέγξετε τους πελάτες ανοιχτού κώδικα GraphQL, την τεκμηρίωση του GraphQL και τις προδιαγραφές του για να μάθετε περισσότερα.