Προγραμματισμός

Τι είναι το API; Επεξήγησαν διεπαφές προγραμματισμού εφαρμογών

Το API σημαίνει διεπαφή προγραμματισμού εφαρμογών, μια έννοια που ισχύει παντού, από εργαλεία γραμμής εντολών έως εταιρικός κώδικας Java έως εφαρμογές ιστού Ruby on Rails. Το API είναι ένας τρόπος αλληλεπίδρασης μέσω προγραμματισμού με ένα ξεχωριστό στοιχείο ή πόρο λογισμικού.

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

Τι είναι το API;

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

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

Ένα πράγμα που πρέπει να θυμάστε είναι ότι το όνομα ορισμένων API χρησιμοποιείται συχνά για να αναφέρεται τόσο στην προδιαγραφή των αλληλεπιδράσεων όσο και στο πραγματικό στοιχείο λογισμικού με το οποίο αλληλεπιδράτε. Η φράση "Twitter API", για παράδειγμα, δεν αναφέρεται μόνο στο σύνολο κανόνων για την αλληλεπίδραση μέσω προγραμματισμού με το Twitter, αλλά εννοείται γενικά ότι σημαίνει το πράγμα με το οποίο αλληλεπιδράτε, όπως στο "Κάνουμε ανάλυση για τα tweets που έχουμε από το API του Twitter. "

API ως επίπεδο αφαίρεσης

Όσον αφορά το λογισμικό, τα API είναι κυριολεκτικά παντού. Τα API συμβαδίζουν με μια από τις πιο θεμελιώδεις έννοιες στην επιστήμη των υπολογιστών: αφαίρεση. Η αφαίρεση είναι απλώς ένας τρόπος οργάνωσης της πολυπλοκότητας ενός συστήματος, έτσι ώστε οι πολύπλοκες ενέργειες να μπορούν να αντιμετωπίζονται με απλό τρόπο. Σκεφτείτε αυτήν την αφαίρεση όπως αυτά του Amazon Dash Buttons, τις πλακέτες κυκλωμάτων που λειτουργούν με μπαταρία και μπορείτε να χρησιμοποιήσετε για να παραγγείλετε συρραπτικά από την Amazon. Έτσι μοιάζουν:

Παραγγείλετε ένα κουμπί Dash από την Amazon και χρησιμοποιείτε μια εφαρμογή στο smartphone σας για να το συσχετίσετε με το δίκτυο Wi-Fi, τον λογαριασμό σας στο Amazon και ένα προϊόν, ας πούμε, την αγαπημένη σας μάρκα χαρτοπετσέτας. Στη συνέχεια, όποτε θέλετε να παραγγείλετε περισσότερες χαρτοπετσέτες, απλώς πατάτε το κουμπί. Το κουμπί Dash συνδέεται στο Διαδίκτυο και στέλνει ένα μήνυμα για την παραγγελία στον λογαριασμό σας. Λίγες μέρες αργότερα, χάρτινες πετσέτες φτάνουν στο κατώφλι σας.

Όπως ένα API, το Dash Button είναι μια ευχάριστα απλή διεπαφή που κρύβει κάθε είδους πολυπλοκότητα πίσω από τα παρασκήνια. Το αναγνωριστικό του προϊόντος που παραγγείλατε πρέπει να ανακτηθεί από κάποια βάση δεδομένων. Η διεύθυνση παράδοσης πρέπει να τραβηχτεί από τον λογαριασμό σας. Πρέπει να προσδιοριστεί το πλησιέστερο κέντρο εκπλήρωσης που αποθηκεύει τις χαρτοπετσέτες σας και, στη συνέχεια, να ειδοποιηθεί για να αφαιρέσει ένα αντικείμενο από το διαθέσιμο απόθεμα και να το συσκευάσει. Τέλος, το πακέτο πρέπει να δρομολογηθεί μέσω κάποιου συνδυασμού αεροπλάνων, φορτηγών και φορτηγών μαζί με άλλα πακέτα με τρόπο που διασφαλίζει ότι όλα τα πακέτα θα φτάσουν αποτελεσματικά στους προορισμούς τους.

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

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

Δημόσια API και ενοποίηση API

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

Αυτά τα είδη κωδικοποίησης κώδικα επιτρέπουν στους χρήστες να συνδυάζουν και να ταιριάζουν με τη λειτουργικότητα διαφορετικών προμηθευτών στα δικά τους συστήματα. Για παράδειγμα, εάν χρησιμοποιείτε το λογισμικό αυτοματισμού μάρκετινγκ Marketo, μπορείτε να συγχρονίσετε τα δεδομένα σας εκεί με τη λειτουργικότητα Salesforce CRM.

Το «ανοιχτό» ή «δημόσιο» δεν πρέπει να ερμηνευθεί ως έννοια «δωρεάν» σε αυτό το πλαίσιο. Πρέπει ακόμα να είστε πελάτης Marketo και Salesforce για να λειτουργήσει αυτό. Όμως, η διαθεσιμότητα αυτών των API καθιστά την ενσωμάτωση πολύ πιο απλή διαδικασία από ό, τι διαφορετικά θα ήταν. ( έχει μια υπέροχη λίστα δημόσιων API που πρέπει να γνωρίζετε.)

Υπηρεσίες Ιστού και API

Μπορεί να θυμάστε τον όρο wυπηρεσίες eb από τις αρχές της δεκαετίας του '00 και πιστεύω ότι η ιδέα ενός ανοιχτού API ακούγεται πολύ παρόμοια. Στην πραγματικότητα, μια υπηρεσία ιστού είναι ένα συγκεκριμένο είδος ανοικτού API, το οποίο πληροί ένα αρκετά άκαμπτο σύνολο προδιαγραφών, συμπεριλαμβανομένου ότι καθορίζονται στη Γλώσσα περιγραφής υπηρεσιών Web (WSDL), μια παραλλαγή XML.

Οι υπηρεσίες Ιστού προορίζονταν να χρησιμοποιηθούν ως μέρος μιας αρχιτεκτονικής προσανατολισμένης στις υπηρεσίες (SOA). Όπως εξηγεί το ιστολόγιο Nordic APIs, αυτό έδωσε στις διαδικτυακές υπηρεσίες κάτι κακό όνομα, καθώς οι SOA δεν ανταποκρίθηκαν ποτέ στις δυνατότητές τους. Οι εξελίξεις στις τεχνικές που χρησιμοποιούνται για επικοινωνίες μεταξύ υπηρεσιών - κυρίως ελαφρύτερες, πιο ευέλικτες REST - έχουν επίσης αφήσει τις υπηρεσίες ιστού κάπως πίσω στον κόσμο των δημόσιων API.

API REST

Οι διαδικτυακές υπηρεσίες είχαν αρχικά σχεδιαστεί για να επικοινωνούν χρησιμοποιώντας το SOAP (Simple Object Access Protocol), ένα πρωτόκολλο ανταλλαγής μηνυμάτων που στέλνει έγγραφα XML μέσω HTTP. Σήμερα, ωστόσο, τα περισσότερα API που βασίζονται στον Ιστό χρησιμοποιούν το REST - Μεταφορική Κατάσταση Μεταφοράς - ως αρχιτεκτονικό στιλ.

Το REST παρουσιάστηκε επίσημα από τον Roy Fielding στη διδακτορική του διατριβή το 2000. Πρόκειται για ένα σύνολο αρχιτεκτονικών στοιχείων, αρχών σχεδιασμού και αλληλεπιδράσεων που χρησιμοποιούνται για την κατασκευή κατανεμημένων συστημάτων που περιλαμβάνουν μέσα κάθε είδους (κείμενο, βίντεο κ.λπ.). Στον πυρήνα του, το REST είναι ένα στυλ οικοδομικών συστημάτων που επιτρέπει ευέλικτη επικοινωνία και προβολή πληροφοριών σε ολόκληρο τον Ιστό, παρέχοντας ταυτόχρονα την απαραίτητη δομή για την εύκολη κατασκευή στοιχείων γενικής χρήσης.

Σε ένα REST API, a πόρος θα μπορούσε να είναι σχεδόν οτιδήποτε, αλλά τα παραδείγματα περιλαμβάνουν έναν χρήστη, μια λίστα tweets και τα τρέχοντα αποτελέσματα μιας αναζήτησης για tweets. Κάθε ένας από αυτούς τους πόρους είναι διευθυνσιοδοτούμενος στο a αναγνωριστικό πόρου, το οποίο στην περίπτωση REST API που βασίζεται στον ιστό είναι συνήθως μια διεύθυνση URL, όπως //api.twitter.com/1.1/users/show?screen_name=twitterdev. Όταν μια εφαρμογή ζητά έναν πόρο χρησιμοποιώντας το αναγνωριστικό, το API παραδίδει το τρέχον αναπαράσταση αυτού του πόρου στην εφαρμογή σε μορφή που μπορεί να καταναλώσει η εφαρμογή, όπως εικόνα JPEG, σελίδα HTML ή JSON.

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

Φυσικά, το πρόβλημα με την «αποτελεσματική» προσέγγιση είναι ότι τα συστήματα που φιλοξενούν τα δεδομένα θα πρέπει να γνωρίζουν τι εφαρμογές θέλουν να κάνουν με αυτά εκ των προτέρων. Έτσι, για να δημιουργήσετε ένα API με ευχρηστία και ευελιξία γενικού σκοπού, το REST είναι ο καλύτερος τρόπος.

Παραδείγματα API

Υπάρχουν πολλά δημόσια API εκεί έξω για να μπορείτε να αλληλεπιδράσετε, πολλά από τα μεγαλοπρεπή βιομηχανία. Η δυνατότητα πρόσβασης στον κώδικα μιας εταιρείας πλατφόρμα μέσω προγραμματισμού μέσω API είναι αυτό που τους κάνει ουσιαστικά μια πλατφόρμα. Μερικά εξέχοντα παραδείγματα API περιλαμβάνουν:

  • API της Google, που σας επιτρέπουν να συνδέσετε τον κωδικό σας σε ολόκληρο το φάσμα των υπηρεσιών Google, από τους Χάρτες έως τη Μετάφραση. Τα API είναι τόσο σημαντικά για την Google που απέκτησαν το Apigee, μια κορυφαία πλατφόρμα διαχείρισης API.
  • API του Facebook, που σας επιτρέπουν να έχετε πρόσβαση μέσω προγραμματισμού στα κοινωνικά γραφήματα και τα εργαλεία μάρκετινγκ του Facebook. (Η εταιρεία περιορίζει ακριβώς τα δεδομένα των χρηστών στα οποία μπορείτε να έχετε πρόσβαση μέσω αυτών των API κατά την πτώση από την Cambridge Analytica και άλλα σκάνδαλα.)

Για να κατανοήσουμε πραγματικά πώς λειτουργούν τα API, ας κάνουμε μια βαθιά βουτιά σε δύο: το Java API, το οποίο χρησιμοποιούν οι προγραμματιστές Java για να αλληλεπιδράσουν με την πλατφόρμα Java και το Twitter API, ένα δημόσιο API που θα χρησιμοποιούσατε για να αλληλεπιδράσετε με το κοινωνικό δίκτυο υπηρεσία δικτύωσης.

Το Java API

Το Java API είναι μια βιβλιοθήκη στοιχείων λογισμικού που διατίθενται «εκτός κουτιού» σε οποιονδήποτε έχει εγκαταστήσει το Java Development Kit. Αυτά τα στοιχεία υλοποιούν κοινές εργασίες και γενικά αυξάνουν την παραγωγικότητα, επειδή οι προγραμματιστές δεν χρειάζεται να ξεκινούν από το μηδέν κάθε φορά. Ένα από τα βασικά στοιχεία που χρησιμοποιούνται στο λογισμικό είναι κάτι που ονομάζεται Λίστα, το οποίο, όπως θα περίμενε κανείς, παρακολουθεί μια λίστα στοιχείων. Το Java API ορίζει τι μπορείτε να κάνετε με μια λίστα: να προσθέσετε στοιχεία, να ταξινομήσετε τη λίστα, να προσδιορίσετε εάν ένα στοιχείο βρίσκεται στη λίστα, κ.λπ. Επίσης, καθορίζει πως για να εκτελέσετε αυτές τις ενέργειες. Για να ταξινομήσετε τη λίστα, πρέπει να καθορίσετε τον τρόπο με τον οποίο θέλετε να ταξινομηθεί η λίστα: αλφαβητικά, αριθμητικά φθίνουσα, φωτεινότερη έως θαμπό χρώμα κ.λπ.

Το API του Twitter

Το Twitter API είναι ένα διαδικτυακό JSON API που επιτρέπει στους προγραμματιστές να αλληλεπιδρούν μέσω προγραμματισμού με δεδομένα Twitter. Σε αντίθεση με το Java API, το οποίο περιλαμβάνεται στο Java Development Kit, το Twitter API είναι ένα διαδικτυακό API. Πρέπει να έχει πρόσβαση κάνοντας αιτήματα μέσω Διαδικτύου σε υπηρεσίες που φιλοξενεί το Twitter.

Με ένα διαδικτυακό API όπως το Twitter, η εφαρμογή σας στέλνει ένα αίτημα HTTP, όπως κάνει ένα πρόγραμμα περιήγησης ιστού. Ωστόσο, αντί για την απάντηση που παρέχεται ως ιστοσελίδα, για κατανόηση από τον άνθρωπο, επιστρέφεται σε μορφή που οι εφαρμογές μπορούν εύκολα να αναλυθούν. Υπάρχουν διάφορες μορφές για το σκοπό αυτό και το Twitter χρησιμοποιεί μια δημοφιλή και εύχρηστη μορφή που ονομάζεται JSON. (Εάν δεν είστε εξοικειωμένοι με το JSON, ίσως θελήσετε να αφιερώσετε λίγα λεπτά για να το διαβάσετε εδώ.)

Ένα από τα βασικά στοιχεία στο Twitter είναι ένα tweet. Το Twitter API σας λέει τι μπορείτε να κάνετε με tweets: αναζήτηση tweets, δημιουργία tweet, αγαπημένο tweet. Σας λέει επίσης πως για να εκτελέσετε αυτές τις ενέργειες. Για να αναζητήσετε tweets, πρέπει να καθορίσετε τα κριτήρια αναζήτησής σας: όρους ή hashtag για αναζήτηση, γεωγραφική τοποθεσία, γλώσσα κ.λπ.

Σχεδιασμός API

Ο σχεδιασμός API είναι η διαδικασία με την οποία διατυπώνονται το «τι» και το «πώς» ενός API. Όπως με οτιδήποτε άλλο μπορεί να δημιουργηθεί, διάφορα επίπεδα σκέψης και φροντίδας τοποθετούνται στο σχεδιασμό API, με αποτέλεσμα διαφορετικά επίπεδα ποιότητας API. Τα καλά σχεδιασμένα API έχουν συνεπή συμπεριφορά, λαμβάνουν υπόψη το περιβάλλον τους και λαμβάνουν υπόψη τις ανάγκες των χρηστών τους.

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

Παρόλο που οι δύο μέθοδοι προσθήκης στοιχείων σε μια λίστα κάνουν το ίδιο πράγμα, οι τύποι επιστροφής τους (boolean και void) είναι διαφορετικοί. Οι προγραμματιστές που χρησιμοποιούν αυτό το API πρέπει τώρα να παρακολουθούν ποια μέθοδο επιστρέφει σε ποιον τύπο, καθιστώντας το API πιο δύσκολο να μάθει και τη χρήση του πιο επιρρεπές σε σφάλματα. Σημαίνει επίσης ότι ο κώδικας που χρησιμοποιεί αυτές τις μεθόδους γίνεται λιγότερο ευέλικτος, γιατί πρέπει να αλλάξει εάν θέλετε να αλλάξετε τον τρόπο με τον οποίο προσθέτετε στοιχεία.

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

$config[zx-auto] not found$config[zx-overlay] not found