Οι διεπαφές προγραμματισμού εφαρμογών (API) επιτρέπουν σε προγράμματα και υπηρεσίες υπολογιστών να επικοινωνούν μεταξύ τους και να έχουν πρόσβαση σε δεδομένα. Τα πρωτόκολλα API καθορίζουν τις οδηγίες, τις μορφές και τις τεχνικές που χρησιμοποιούν για να το κάνουν. Εξερευνούμε μερικά από τα πιο δημοφιλή πρωτόκολλα API παρακάτω, εξετάζοντας πώς μπορείτε να τα χρησιμοποιήσετε για να αλληλεπιδράσετε με ασφάλεια με διαδικτυακά δεδομένα και υπηρεσίες.
Τι είναι τα πρωτόκολλα API;
Τα πρωτόκολλα API ορίζουν τους κανόνες σχετικά με τον τρόπο λειτουργίας των API, τον τρόπο αποστολής κλήσεων και απαντήσεων, τον τρόπο λειτουργίας των ερωτημάτων, τον τρόπο διαχείρισης των σφαλμάτων και πολλά άλλα. Επιτρέπουν στους προγραμματιστές να εργάζονται μέσα σε ένα πλαίσιο με καθορισμένες προσδοκίες και όρια που καθορίζουν πρότυπα για το πώς θα λειτουργεί το API και πώς μπορεί να καταναλωθεί.
Το πιο δημοφιλές πρωτόκολλο API που χρησιμοποιείται τη στιγμή της γραφής είναι το REST – μεταφορά κατάστασης αναπαράστασης. Άλλες κοινές μορφές API περιλαμβάνουν το SOAP (πρωτόκολλο πρόσβασης απλών αντικειμένων) και το GraphQL, το οποίο έχει αυξηθεί σε δημοτικότητα τα τελευταία χρόνια.
Οι τύποι API που επιλέγουν να χρησιμοποιήσουν οι προγραμματιστές θα καθορίσουν τον τρόπο με τον οποίο μπορούν να σχεδιάσουν αυτά τα API και πώς θα λειτουργήσουν, καθώς και πόσο εύκολο είναι να καταναλωθούν. Οι διαφορετικοί τύποι πρωτοκόλλων API μπορούν επίσης να επηρεάσουν την απόδοση, πράγμα που σημαίνει ότι αυτό πρέπει να λαμβάνεται υπόψη όταν πρόκειται για αρχιτεκτονικές αποφάσεις, ιδιαίτερα για θέματα όπως πύλη microservice και μοτίβα πρόσβασηςόπου οι οργανισμοί συνήθως θέλουν να κινηθούν πιο γρήγορα.
Διαφορετικοί τύποι πρωτοκόλλων API
Ενα από οφέλη του Tyk είναι ότι υποστηρίζει πρωτόκολλα REST, GraphQL, TCP και gRPC, παρέχοντάς σας αρκετή ευελιξία όσον αφορά το σχεδιασμό και τη δημοσίευση των API σας. Πώς όμως ξέρετε ποιο πρωτόκολλο API είναι καλύτερο για την κάλυψη των αναγκών της επιχείρησής σας; Ας δούμε μερικές από τις πιο δημοφιλείς επιλογές…
REST API
Τα RESTful API είναι API που χρησιμοποιούν το πρωτόκολλο REST. Τα REST API είναι ελαφριά, ευέλικτα και γρήγορα και εύκολα στην εφαρμογή τους, πράγμα που σημαίνει ότι είναι ιδανικά για επεκτασιμότητα. Με αυτό το πρωτόκολλο η επικοινωνία API πραγματοποιείται μέσω HTTP/HTTPS.
Τα REST API είναι ανιθαγενή και απαιτούν ξεχωριστά αιτήματα GET χωρίς να αποθηκεύονται δεδομένα πελάτη μεταξύ τους. Τα αιτήματα REST API περιλαμβάνουν τελικό σημείο (URL προορισμού), μέθοδο (GET, PUT, POST ή DELETE), κεφαλίδες (αναλυτικά το αίτημα και την απαιτούμενη μορφή απάντησης) και σώμα (τα δεδομένα).
Κάθε φορά που υποβάλλεται ένα αίτημα, το REST του εκχωρεί μια μοναδική διεύθυνση URL, με τυποποιημένες αναπαραστάσεις που χρησιμοποιούνται για τη μεταφορά της απάντησης πίσω από τον διακομιστή (εξ ου και το όνομα – μεταφορά κατάστασης αναπαράστασης).
Τα API που δημιουργούνται σύμφωνα με το πρωτόκολλο REST διαθέτουν τα εξής:
- Διαχωρισμός πελάτη-διακομιστή – τα αιτήματα και οι απαντήσεις είναι απλές, αλληλεπιδράσεις εμπρός και πίσω.
- Ομοιόμορφη διεπαφή – τα αιτήματα και οι απαντήσεις χρησιμοποιούν κοινή μορφοποίηση για τυποποιημένη επικοινωνία.
- Χωρίς ιθαγένεια – κάθε αίτημα είναι ξεχωριστό, όπως και η απόκρισή του, με τον διακομιστή να μην απαιτείται να συνδεθεί ή να θυμάται τα διαφορετικά αιτήματα.
- Με δυνατότητα προσωρινής αποθήκευσης – ο πελάτης μπορεί να αποθηκεύσει τις απαντήσεις API για να υποστηρίξει ταχύτερους χρόνους απόκρισης.
- Layered – υπάρχει διαχωρισμός των ανησυχιών μεταξύ της διεπαφής API, του backend και του διακομιστή, καθιστώντας ευκολότερη την πραγματοποίηση αλλαγών στο backend χωρίς να επηρεάζεται τίποτα άλλο.
Πολλά RESTful API διαθέτουν επίσης κώδικα κατ‘ απαίτηση. Αυτό σημαίνει ότι ο διακομιστής μπορεί να στείλει μια απάντηση που περιέχει κώδικα που μπορεί να εκτελέσει ο πελάτης (και όχι δεδομένα). Ωστόσο, η δυνατότητα εκμετάλλευσης του κώδικα κατ‘ απαίτηση σημαίνει ότι αυτό είναι ένα προαιρετικό χαρακτηριστικό με το πρωτόκολλο REST, παρά ουσιαστικό.
GraphQL API
Σύμφωνα με την Έκθεση κατάστασης GraphQL 2022το 19,5% των προγραμματιστών χρησιμοποιεί τώρα το GraphQL για δημόσια διαθέσιμα API που προορίζονται για κατανάλωση από τρίτους προγραμματιστές, ενώ το ποσοστό αυξάνεται στο 40,4% για ιδιωτικά μη εκτεθειμένα API για εσωτερική χρήση και στο τεράστιο 47,9% των προγραμματιστών για API για προσωπικούς ιστότοπους ή εφαρμογές .
Αρκεί να πούμε ότι εάν σκέφτεστε να δημιουργήσετε ένα API, το GraphQL δικαιολογεί εξέταση, ιδιαίτερα εάν εργάζεστε με μικροϋπηρεσίες. Με την εφαρμογή ενός Πύλη API για μικροϋπηρεσίες με το GraphQL, μπορείτε να προσφέρετε μια λύση υψηλής απόδοσης που σας προσφέρει ασφάλεια και έλεγχο
Ένα GraphQL API απαιτεί τρία βασικά στοιχεία: ένα ερώτημα, ένα πρόγραμμα επίλυσης και ένα σχήμα. Το ερώτημα είναι το αίτημα που προέρχεται από τον πελάτη GraphQL στον διακομιστή, προσδιορίζοντας ποιες πληροφορίες απαιτούνται, χρησιμοποιώντας πεδία και ορίσματα. Ο αναλυτής παρέχει τις οδηγίες για τη μετατροπή της λειτουργίας GraphQL που προκύπτει σε δεδομένα. Το σχήμα, εν τω μεταξύ, χρησιμοποιεί τύπους για να φέρει τα πάντα μαζί, περιγράφοντας τις διαθέσιμες λειτουργίες και δεδομένα.
Τα GraphQL API χρησιμοποιούν ερωτήματα για να ζητήσουν τα δεδομένα που χρειάζονται. Με τα δεδομένα που περιγράφονται στο σχήμα, ο πελάτης μπορεί στη συνέχεια να ζητήσει αυτό που απαιτείται, παράγοντας προβλέψιμα αποτελέσματα.
Τα API που δημιουργούνται με χρήση της προδιαγραφής GraphQL ενδέχεται (αλλά δεν χρειάζεται) να χρησιμοποιούν τις ακόλουθες κοινές βέλτιστες πρακτικές:
- HTTP – ενώ τα REST API βασίζονται σε διευθύνσεις URL μεμονωμένης παρουσίας, το GraphQL συνήθως χρησιμοποιεί ένα μόνο τελικό σημείο πάνω από το HTTP.
- JSON – συνήθως, οι υπηρεσίες GraphQL ανταποκρίνονται χρησιμοποιώντας JSON, λόγω του πόσο καλά μπορεί να συμπιέσει το JSON με GZIP.
- Εκδόσεις – καθώς είναι δυνατή η συνεχής εξέλιξη του σχήματος, υπάρχει μειωμένη ανάγκη έκδοσης GraphQL API, πράγμα που σημαίνει ότι είναι πιο εύκολο να αποφευχθούν οι αλλαγές.
- Nullability – κάθε πεδίο είναι μηδενικό από προεπιλογή σε ένα σύστημα τύπου GraphQL.
- Σελιδοποίηση – Οι σχεδιαστές API έχουν τον έλεγχο της σελιδοποίησης των λιστών τιμών που μπορούν να επιστρέψουν ορισμένα πεδία.
- Ομαδοποίηση και προσωρινή αποθήκευση από την πλευρά του διακομιστή – οι προγραμματιστές μπορούν να χρησιμοποιήσουν τεχνικές ομαδοποίησης για τη συλλογή πολλαπλών αιτημάτων για δεδομένα σε σύντομο χρονικό διάστημα και στη συνέχεια να αποστείλουν ένα μόνο αίτημα.
SOAP API
Το πρωτόκολλο διαδικτυακής υπηρεσίας SOAP είναι ένα ανοιχτό πρότυπο που χρησιμοποιεί μορφοποίηση δεδομένων XML για να επιτρέψει την επικοινωνία μέσω Διαδικτύου. Προηγείται του REST, αφού δημιουργήθηκε για να διευκολύνει την κοινή χρήση δεδομένων μεταξύ των εφαρμογών.
Τα API SOAP χρησιμοποιούν φακέλους που ορίζουν δομές μηνυμάτων και λεπτομέρειες επεξεργασίας, μαζί με κανόνες κωδικοποίησης και συμβάσεις κλήσεων και απόκρισης. Έχουν τρία αξιοσημείωτα χαρακτηριστικά:
- Επεκτασιμότητα – οι προγραμματιστές μπορούν να εισάγουν λειτουργίες μέσω επεκτάσεων.
- Ουδετερότητα – Το SOAP λειτουργεί μέσω HTTP, UDP, SMTP, TCP και JMS, παρέχοντας μεγάλη ευελιξία.
- Ανεξαρτησία – Τα API SOAP είναι ανεξάρτητα από τη γλώσσα και ανεξάρτητα από την πλατφόρμα, καθώς οι απαντήσεις τους χρησιμοποιούν XML.
Ενώ πολλές εφαρμογές Ιστού βασίζονται στο REST (και πιο πρόσφατα στο GraphQL), τα SOAP API αποτελούν το θεμέλιο των λειτουργιών πολλών μεγάλων εταιρειών. Χάρη στην ισχυρή ασφάλεια που προκύπτει από τη χρήση του WS-Security και του SSL από το SOAP για μεταδόσεις, τα SOAP API είναι επίσης δημοφιλή σε κυβερνητικούς οργανισμούς, τράπεζες και άλλες μεγάλες επιχειρήσεις όπου η ασφάλεια αποτελεί κορυφαία προτεραιότητα.
gRPC
Διαθέσιμο δημοσίως από το 2015, το gRPC είναι ένα πλαίσιο κλήσεων απομακρυσμένης διαδικασίας (RPC) που βασίζεται σε συμβάσεις μεταξύ πλατφορμών. Είναι ανοιχτού κώδικα και επικοινωνεί χρησιμοποιώντας HTTP/2 και TLS.
Τα χαρακτηριστικά των gRPC API περιλαμβάνουν δυαδικά ωφέλιμα φορτία, αμφίδρομη ροή και buffer πρωτοκόλλου. Το τελευταίο περιλαμβάνει μια γλώσσα ορισμού συμβολαίου, κωδικό συνάρτησης πρόσβασης και βιβλιοθήκες χρόνου εκτέλεσης για συγκεκριμένη γλώσσα. Οι προγραμματιστές μπορούν να ορίσουν συναρτήσεις και παραμέτρους μέσα στο API αρχεία buffer πρωτοκόλλου.
Το gRPC είναι ελαφρύ και γρήγορο (σε σύγκριση με το REST), που σημαίνει ότι το χρησιμοποιούν πολλοί μεγάλοι οργανισμοί, συμπεριλαμβανομένου του δημιουργού του, της Google, που χρησιμοποιούσε το gRPC για τη σύνδεση μικροϋπηρεσιών ήδη από το 2001. Εκτός από το ότι είναι χρήσιμο για αρχιτεκτονικές μικροϋπηρεσιών, το gRPC λειτουργεί καλά όταν συνδέετε πελάτες κινητής τηλεφωνίας με υπηρεσίες υποστήριξης.
RPC API
Όπως τα SOAP API, τα RPC API προηγούνται του REST. Τα API RPC είναι ιδιαίτερα χρήσιμα για μεμονωμένες ενέργειες ή εργασίες, αντί να χειρίζονται μεγάλους όγκους δεδομένων. Βασίζονται στο TCP ή το UDP για να λειτουργούν σωστά, με το UDP να παρέχει καλύτερη απόδοση.
Τα RPC API χρησιμοποιούν έναν βρόχο ερωτημάτων-απόκρισης για την εκπλήρωση κλήσεων και αιτημάτων. Η κλήση πηγαίνει από πελάτη σε διακομιστή, με την απάντηση να αποστέλλεται ξανά συγχρονισμένα.
Υπάρχουν δύο κύριοι τύποι RPC API, οπότε ας ρίξουμε μια γρήγορη ματιά σε καθένα από αυτά.
JSON-RPC
Το JSON-RPC έχει σχεδιαστεί (όπως υποδηλώνει το όνομα!) χρησιμοποιώντας JSON. Τα JSON-RPC API είναι ελαφριά, χωρίς ιθαγένεια και εύκολα στην εφαρμογή τους.
XML-RPC
Τα XML-RPC API, εν τω μεταξύ, μεταφέρουν δεδομένα ως αρχεία XML. Αυτό σημαίνει ότι είναι πιο ασφαλή από τα JSON-RPC API, επομένως είναι επωφελής για οργανισμούς όπου η ασφάλεια αποτελεί προτεραιότητα.
Πρωτόκολλα και αρχιτεκτονικές API
Η απόφαση ποια πρωτόκολλα API θα χρησιμοποιηθούν θα είναι μέρος μιας ευρύτερης επιχειρηματικής στρατηγικής που εξετάζει ποια Αρχιτεκτονικά μοτίβα διαχείρισης και ανάπτυξης API θα εξυπηρετήσει καλύτερα τους επιχειρησιακούς στόχους της εταιρείας σας. Η κατανόηση της ιδιαίτερης ισορροπίας μεταξύ ασφάλειας, ταχύτητας, ευελιξίας και άλλων θα σας βοηθήσει να τροφοδοτήσετε τις συζητήσεις σχετικά με το ποιες μορφές API θα είναι οι καταλληλότερες.
Κάθε πρωτόκολλο API έχει τα δικά του ξεχωριστά πλεονεκτήματα και χρήσεις, γι‘ αυτό δεν υπάρχει ένα πρωτόκολλο «ένα μέγεθος που ταιριάζει σε όλους» σε χρήση από κάθε οργανισμό. Ταυτόχρονα, οι νέες τεχνολογίες και οι επιχειρηματικές τάσεις – ιδίως ο τεράστιος πολλαπλασιασμός των επιχειρηματικών μοντέλων λογισμικού ως υπηρεσία (SaaS) – οδηγεί νέους τρόπους σκέψης για τα API και τη χρήση τους. Αυτός είναι ο λόγος για τον οποίο πρέπει να δοθεί ιδιαίτερη προσοχή στη χρήση του σωστού πρωτοκόλλου API για την κάλυψη των αναγκών της επιχείρησής σας.
Τέτοιες αποφάσεις εξαρτώνται επίσης από την προβλεπόμενη χρήση του API σας. Εάν είναι ένα πρωτόκολλο υπηρεσίας web που χρειάζεστε, για παράδειγμα, τότε το RPC δεν θα ήταν τόσο κατάλληλο όσο το REST (για παράδειγμα). Ωστόσο, εάν είναι μια ελαφριά προσέγγιση για την αλληλεπίδραση με ένα δίκτυο που πρέπει να ενεργοποιήσετε, το RPC μπορεί να είναι η καλύτερη επιλογή. Το εάν το API σας είναι εσωτερικό, εξωτερικό, δημόσιο ή σύνθετο θα παίξει επίσης τον τρόπο σκέψης γύρω από το ποια πρωτόκολλα και αρχιτεκτονικές API είναι καλύτερα.
Για μακροχρόνιες επιχειρήσεις, είναι επίσης σημαντικό να λάβετε υπόψη ποιο πρωτόκολλο API θα παίξει καλύτερα με την υπάρχουσα υποδομή σας. Τα συστήματα παλαιού τύπου μπορούν να δημιουργήσουν πολυπλοκότητες για επιχειρήσεις που ακολουθούν στρατηγικές ψηφιακού μετασχηματισμού, επομένως πρέπει να λαμβάνονται υπόψη σε οποιεσδήποτε αποφάσεις σχετικά με νέα πρωτόκολλα και αρχιτεκτονικές.
Ποια είναι η διαφορά μεταξύ των πρωτοκόλλων API;
Τα πρωτόκολλα API που εξερευνήσαμε παραπάνω έχουν θεμελιώδεις διαφορές από τεχνική άποψη. Το αποτέλεσμα αυτών των διαφορών φαίνεται στο:
- Εκτέλεση
- Λειτουργικότητα
- Αξιοπιστία
- Ευκολία υλοποίησης
- Ευκολία κατανάλωσης
- Ασφάλεια
- Επεκτασιμότητα
Υπάρχει συχνά ανάγκη να εξισορροπηθεί ποια από αυτά είναι πιο σημαντικά για τις λειτουργίες μιας επιχείρησης όταν πρόκειται για αποφάσεις που σχετίζονται με το API. Η απόδοση τείνει να είναι κορυφαία προτεραιότητα όταν πρόκειται για GraphQL API, για παράδειγμα, ενώ η αξιοπιστία αποτελεί βασικό πόλο έλξης των RESTful API. Τα SOAP API, από την άλλη πλευρά, έχουν μεγάλη απήχηση από την άποψη της ασφάλειας, αν και είναι πιο βαρύ από τα JSON-RPC API και ορισμένα άλλα. Τα API SOAP δεν είναι επίσης τα πιο εύκολα στην υιοθέτηση όσον αφορά τη γνώση που θα χρειαστεί η ομάδα σας για να ξεκινήσει.
Επιλέγοντας το σωστό API
Όλες οι παραπάνω διαφορές δικαιολογούν εξέταση όταν πρόκειται για την επιλογή του σωστού API για την επιχείρησή σας. Θα μπει και το κόστος, φυσικά. Οι αποφάσεις σχετικά με τα διαφορετικά πρωτόκολλα API θα επηρεάσουν τα πάντα, από το εύρος της δεξαμενής πόρων προγραμματιστών από το οποίο πρέπει να επιλέξετε μέχρι το χρόνο που χρειάζεται για να φέρετε το προϊόν σας στην αγορά.
Η διαχείριση API είναι μια άλλη σκέψη. Το πρωτόκολλο API που θα επιλέξετε θα υπαγορεύσει ποιες λύσεις διαχείρισης API μπορείτε να εφαρμόσετε. Αν υπάρχει κάποιο συγκεκριμένο πύλη API ανοιχτού κώδικα ή πλατφόρμα διαχείρισης που σκοπεύετε να χρησιμοποιήσετε, καθώς θέλετε να επωφεληθείτε από τις εκτεταμένες δυνατότητες ή την εξαιρετική τιμή της, εξετάστε πόσο καλά θα λειτουργήσει με το πρωτόκολλο που έχετε επιλέξει προτού δεσμευτείτε για οτιδήποτε.
Εάν έχετε περαιτέρω ερωτήσεις σχετικά με τα API, τη διαχείριση API και το τι θα λειτουργήσει καλύτερα για την επιχείρησή σας, να θυμάστε ότι η ομάδα Tyk είναι εδώ για να σας βοηθήσει. Γιατί όχι έρχομαι σε επαφή να συζητήσετε τις ανάγκες σας με τους φιλικούς μας ειδικούς;