REST API
Τι είναι το REST API;
Ένα REST API είναι ένα αρχιτεκτονικό στυλ και μια διεπαφή λογισμικού που επιτρέπει σε ανεξάρτητα υπολογιστικά συστήματα να επικοινωνούν και να ανταλλάσσουν δεδομένα μέσω ενός δικτύου, συνήθως του διαδικτύου. Στη μηχανική λογισμικού και στα συστήματα δεδομένων, μια διεπαφή προγραμματισμού εφαρμογών καθιερώνει ένα τυποποιημένο σύνολο κανόνων, πρωτοκόλλων και ορισμών δρομολόγησης που επιτρέπουν σε ένα πρόγραμμα λογισμικού να ζητά υπηρεσίες ή πληροφορίες από ένα άλλο. Ο προσδιορισμός REST υποδεικνύει ότι η διεπαφή συμμορφώνεται με ένα συγκεκριμένο σύνολο αρχιτεκτονικών περιορισμών που έχουν οριστεί για κατανεμημένα συστήματα υπερμέσων. Αντί να διατηρεί μια ανοιχτή, συνεχή σύνδεση μεταξύ των συστημάτων, ένα REST API αντιμετωπίζει κάθε αλληλεπίδραση επικοινωνίας ως έναν απομονωμένο κύκλο αιτήματος και απόκρισης. Μοντελοποιεί τις λειτουργίες του δικτύου ως προσβάσιμους πόρους, οι οποίοι προσδιορίζονται από μοναδικά URLs.
Όταν ένας πελάτης υποβάλλει αίτημα σε ένα REST API, ο διακομιστής μεταφέρει μια δομημένη ψηφιακή αναπαράσταση της τρέχουσας κατάστασης του στοχευόμενου πόρου πίσω στον πελάτη, συνήθως μορφοποιημένη σε τυποποιημένες δομές δεδομένων αναγνώσιμες από μηχανές, όπως JSON ή XML.
Πώς λειτουργεί ο μηχανισμός επικοινωνίας ενός REST API;
Ο μηχανισμός επικοινωνίας ενός REST API βασίζεται θεμελιωδώς στο HyperText Transfer Protocol (HTTP), το τυπικό πρωτόκολλο για τη μετάδοση δεδομένων στον Παγκόσμιο Ιστό. Όταν ένα σύστημα πελάτης απαιτεί δεδομένα ή πρέπει να εκτελέσει μια λειτουργία σε έναν απομακρυσμένο διακομιστή, μεταδίδει ένα αίτημα HTTP σε μια καθορισμένη διεύθυνση URL που είναι γνωστή ως τελικό σημείο (endpoint). Αυτό το αίτημα περιλαμβάνει μια μέθοδο HTTP, παραμέτρους κεφαλίδας που καθορίζουν τους τύπους περιεχομένου και τα διαπιστευτήρια ελέγχου ταυτότητας, καθώς και ένα προαιρετικό φορτίο δεδομένων (payload) που περιέχει παραμέτρους ή εγγραφές. Η μέθοδος HTTP ορίζει ρητά την επιχειρησιακή πρόθεση του αιτήματος: η μέθοδος GET ανακτά δεδομένα από τον διακομιστή χωρίς να τα τροποποιεί, η μέθοδος POST υποβάλλει νέα δεδομένα για τη δημιουργία ενός πόρου, οι μέθοδοι PUT ή PATCH τροποποιούν υπάρχουσες εγγραφές και η μέθοδος DELETE καταργεί καθορισμένους πόρους. Κατά τη λήψη του αιτήματος, ο διακομιστής επεξεργάζεται τις οδηγίες, εκτελεί ερωτήματα σε σχετικές βάσεις δεδομένων ή στη λογική διακομιστή και επιστρέφει μια απόκριση HTTP. Αυτή η απόκριση περιλαμβάνει έναν τριψήφιο αριθμητικό κωδικό κατάστασης που υποδεικνύει την επιτυχία ή την αποτυχία της εκτέλεσης (όπως 200 για μια επιτυχημένη λειτουργία ή 404 για έναν ανύπαρκτο πόρο) μαζί με το ζητούμενο φορτίο δεδομένων μορφοποιημένο σύμφωνα με το συμφωνημένο πρότυπο σειριοποίησης.
Ποια είναι η διαφορά μεταξύ ενός REST API και ενός SOAP API ή ενός RPC;
Η βασική διάκριση μεταξύ ενός REST API και εναλλακτικών τεχνολογιών υπηρεσιών ιστού, όπως το SOAP ή το RPC, έγκειται στον αρχιτεκτονικό τους σχεδιασμό και στις απαιτήσεις σειριοποίησης δεδομένων.
Το SOAP είναι ένα άκαμπτο πρότυπο βασισμένο σε πρωτόκολλα, το οποίο απαιτεί αυστηρά τη χρήση XML για τη δόμηση των μηνυμάτων και βασίζεται σε σύνθετα πρωτόκολλα επιπέδου εφαρμογής για την ασφάλεια και τη συμμόρφωση συναλλαγών. Αυτό καθιστά το SOAP υπολογιστικά απαιτητικό και αυξάνει την κατανάλωση εύρους ζώνης δικτύου λόγω των εκτενών ετικετών μεταδεδομένων XML.
Τα πλαίσια RPC, συμπεριλαμβανομένων σύγχρονων παραλλαγών όπως το gRPC, έχουν σχεδιαστεί γύρω από την εκτέλεση συγκεκριμένων λειτουργικών δράσεων ή απομακρυσμένων διαδικασιών αντί για τον χειρισμό στατικών πόρων δεδομένων. Σε ένα μοντέλο RPC, ο πελάτης μεταδίδει ένα αίτημα για την εκτέλεση ενός συγκεκριμένου ονόματος απομακρυσμένης συνάρτησης με ορίσματα, ενώ στο REST, ο πελάτης αλληλεπιδρά με ένα στατικό αναγνωριστικό πόρου βασισμένο σε ουσιαστικό χρησιμοποιώντας τυποποιημένα ρήματα HTTP.
Τα REST API προσφέρουν υψηλότερη λειτουργική ευελιξία και χαμηλότερη καθυστέρηση σε εφαρμογές με έντονη χρήση δεδομένων, επειδή υποστηρίζουν εγγενώς σειριοποίηση JSON χαμηλού επιπέδου επιβάρυνσης, απαιτούν ελάχιστη δομική μορφοποίηση και αξιοποιούν την υπάρχουσα υποδομή ιστού, όπως οι μηχανισμοί προσωρινής αποθήκευσης HTTP, χωρίς να απαιτούν εξειδικευμένα πρωτόκολλα ανταλλαγής μηνυμάτων.