Τι είναι το API; Στα αγγλικά παρακαλώ.

Πριν μάθω την ανάπτυξη λογισμικού, το API έμοιαζε σαν μπύρα.

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

Η απάντηση του μπάρμαν ήταν να ρίξει έναν πόρο 404: δεν βρέθηκε.

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

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

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

WWW και απομακρυσμένοι διακομιστές

Όταν σκέφτομαι τον Ιστό, φαντάζομαι ένα μεγάλο δίκτυο συνδεδεμένων διακομιστών.

Κάθε σελίδα στο Διαδίκτυο αποθηκεύεται κάπου σε έναν απομακρυσμένο διακομιστή. Ένας απομακρυσμένος διακομιστής δεν είναι τόσο μυστικιστικός - είναι απλώς ένα μέρος ενός υπολογιστή που βρίσκεται σε απόσταση, ο οποίος είναι βελτιστοποιημένος για την επεξεργασία αιτημάτων

Για να θέσετε τα πράγματα σε προοπτική, μπορείτε να δημιουργήσετε έναν διακομιστή στον φορητό υπολογιστή σας που να μπορεί να εξυπηρετεί έναν ολόκληρο ιστότοπο στον Ιστό (στην πραγματικότητα, ένας τοπικός διακομιστής είναι αυτό που χρησιμοποιούν οι μηχανικοί για να αναπτύξουν ιστότοπους προτού τους κυκλοφορήσουν στο κοινό).

Όταν πληκτρολογείτε www.facebook.com στο πρόγραμμα περιήγησής σας, ένα αίτημα αποστέλλεται στον απομακρυσμένο διακομιστή του Facebook. Μόλις το πρόγραμμα περιήγησής σας λάβει την απάντηση, ερμηνεύει τον κώδικα και εμφανίζει τη σελίδα.

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

Ένα API δεν είναι το ίδιο με τον απομακρυσμένο διακομιστή - αλλά είναι το τμήμα του διακομιστή που λαμβάνει αιτήματα και αποστέλλει απαντήσεις .

API ως τρόπος εξυπηρέτησης των πελατών σας

Έχετε πιθανώς ακούσει για εταιρείες που συσκευάζουν API ως προϊόντα. Για παράδειγμα, το Weather Underground πωλεί πρόσβαση στο API δεδομένων καιρού.

Παράδειγμα σεναρίου: Ο ιστότοπος της μικρής επιχείρησής σας έχει μια φόρμα που χρησιμοποιείται για την εγγραφή πελατών για ραντεβού. Θέλετε να δώσετε στους πελάτες σας τη δυνατότητα να δημιουργούν αυτόματα ένα συμβάν ημερολογίου Google με τις λεπτομέρειες για αυτό το ραντεβού.

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

Εναλλακτικά, το πρόγραμμα περιήγησής σας μπορεί συχνά να στείλει ένα αίτημα API απευθείας στον διακομιστή της Google παρακάμπτοντας τον διακομιστή σας.

Πώς διαφέρει το API αυτού του Ημερολογίου Google από το API οποιουδήποτε άλλου απομακρυσμένου διακομιστή εκεί έξω;

Σε τεχνικούς όρους , η διαφορά είναι η μορφή του αιτήματος και η απάντηση.

Για να αποδώσει ολόκληρη την ιστοσελίδα, το πρόγραμμα περιήγησής σας αναμένει απόκριση σε HTML, η οποία περιέχει κώδικα παρουσίασης, ενώ η κλήση API του Ημερολογίου Google απλώς θα επιστρέψει τα δεδομένα - πιθανότατα σε μορφή όπως το JSON .

Εάν ο διακομιστής του ιστότοπού σας υποβάλλει το αίτημα API, τότε ο διακομιστής του ιστότοπού σας είναι ο πελάτης (παρόμοιο με το πρόγραμμα περιήγησής σας που είναι ο πελάτης όταν το χρησιμοποιείτε για πλοήγηση σε έναν ιστότοπο).

Από την πλευρά των χρηστών σας, τα API τους επιτρέπουν να ολοκληρώσουν την ενέργεια χωρίς να εγκαταλείψουν τον ιστότοπό σας.

Οι περισσότεροι σύγχρονοι ιστότοποι καταναλώνουν τουλάχιστον ορισμένα API τρίτων.

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

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

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

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

Για παράδειγμα, μπορείτε να αποκτήσετε πρόσβαση στο API του GitHub απευθείας με το πρόγραμμα περιήγησής σας χωρίς καν να χρειαστείτε διακριτικό πρόσβασης. Ακολουθεί η απάντηση JSON που λαμβάνετε όταν επισκέπτεστε μια διαδρομή API χρήστη GitHub στο πρόγραμμα περιήγησής σας (//api.github.com/users/petrgazarov):

{ "login": "petrgazarov", "id": 5581195, "avatar_url": "//avatars.githubusercontent.com/u/5581195?v=3", "gravatar_id": "", "url": "//api.github.com/users/petrgazarov", "html_url": "//github.com/petrgazarov", "followers_url": "//api.github.com/users/petrgazarov/followers", "following_url": "//api.github.com/users/petrgazarov/following{/other_user}", "gists_url": "//api.github.com/users/petrgazarov/gists{/gist_id}", "starred_url": "//api.github.com/users/petrgazarov/starred{/owner}{/repo}", "subscriptions_url": "//api.github.com/users/petrgazarov/subscriptions", "organizations_url": "//api.github.com/users/petrgazarov/orgs", "repos_url": "//api.github.com/users/petrgazarov/repos", "events_url": "//api.github.com/users/petrgazarov/events{/privacy}", "received_events_url": "//api.github.com/users/petrgazarov/received_events", "type": "User", "site_admin": false, "name": "Petr Gazarov", "company": "PolicyGenius", "blog": "//petrgazarov.com/", "location": "NYC", "email": "[email protected]", "hireable": null, "bio": null, "public_repos": 23, "public_gists": 0, "followers": 7, "following": 14, "created_at": "2013-10-01T00:33:23Z", "updated_at": "2016-08-02T05:44:01Z"}

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

Α είναι για την «Εφαρμογή»

Για να κλείσουμε, ας ρίξουμε μερικά ακόμη παραδείγματα API.

Η «εφαρμογή» μπορεί να αναφέρεται σε πολλά πράγματα. Εδώ είναι μερικά από αυτά στο πλαίσιο του API:

  1. Ένα κομμάτι λογισμικού με ξεχωριστή λειτουργία.
  2. Ολόκληρος ο διακομιστής, ολόκληρη η εφαρμογή ή μόνο ένα μικρό μέρος μιας εφαρμογής.

Βασικά, οποιοδήποτε λογισμικό μπορεί να διαχωριστεί ξεχωριστά από το περιβάλλον του, μπορεί να είναι «Α» στο API και πιθανότατα θα έχει και κάποιο είδος API.

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

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

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

Ένα αντικείμενο μπορεί επίσης να έχει εσωτερική λογική που είναι ιδιωτική, που σημαίνει ότι είναικρυμμένοςαπό το εξωτερικό πεδίο (και όχι από ένα API).

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

Ενδιαφέρουσες πηγές (πράγματα που άφησα αλλά είναι ακόμα πολύ δροσερό):

Ένα υπέροχο βίντεο youtube στο DNS (Σύστημα ονομάτων τομέα)

Βασικά πρωτόκολλα HTTP

Ένα βίντεο Awesome Khan Academy σχετικά με τις αντικειμενικές αρχές σχεδιασμού