Qu'est-ce qu'une API? En anglais s'il vous plait.

Avant d'apprendre le développement de logiciels, l'API ressemblait à une sorte de bière.

Aujourd'hui, j'utilise le terme si souvent que j'ai en fait récemment essayé de commander une API dans un bar.

La réponse du barman a été de lancer un 404: ressource introuvable.

Je rencontre beaucoup de gens, travaillant à la fois dans la technologie et ailleurs, qui ont une idée assez vague ou incorrecte de ce que signifie ce terme assez courant.

Techniquement, API signifie Application Programming Interface . À un moment ou à un autre, la plupart des grandes entreprises ont créé des API pour leurs clients ou pour un usage interne.

Mais comment expliquez-vous l'API en anglais simple? Et y a-t-il un sens plus large que celui utilisé dans le développement et les affaires? Tout d'abord, retirons-nous et voyons comment le Web lui-même fonctionne.

WWW et serveurs distants

Quand je pense au Web, j'imagine un grand réseau de serveurs connectés .

Chaque page sur Internet est stockée quelque part sur un serveur distant. Un serveur distant n'est pas si mystique après tout - c'est juste une partie d'un ordinateur distant qui est optimisé pour traiter les demandes.

Pour mettre les choses en perspective, vous pouvez faire tourner un serveur sur votre ordinateur portable capable de servir un site Web entier sur le Web (en fait, un serveur local est ce que les ingénieurs utilisent pour développer des sites Web avant de les publier au public).

Lorsque vous tapez www.facebook.com dans votre navigateur, une demande est envoyée au serveur distant de Facebook. Une fois que votre navigateur reçoit la réponse, il interprète le code et affiche la page.

Pour le navigateur, également appelé client , le serveur de Facebook est une API. Cela signifie que chaque fois que vous visitez une page sur le Web, vous interagissez avec l'API d'un serveur distant.

Une API n'est pas la même chose que le serveur distant - c'est plutôt la partie du serveur qui reçoit les demandes et envoie des réponses .

Les API pour servir vos clients

Vous avez probablement entendu parler d'entreprises qui conditionnent les API en tant que produits. Par exemple, Weather Underground vend l'accès à son API de données météorologiques.

Exemple de scénario: le site Web de votre petite entreprise a un formulaire utilisé pour inscrire les clients aux rendez-vous. Vous souhaitez donner à vos clients la possibilité de créer automatiquement un événement d'agenda Google avec les détails de ce rendez-vous.

Utilisation de l'API: l'idée est que le serveur de votre site Web communique directement avec le serveur de Google avec une demande de création d'un événement avec les détails donnés. Votre serveur recevrait alors la réponse de Google, la traiterait et renverrait les informations pertinentes au navigateur, comme un message de confirmation à l'utilisateur.

Alternativement, votre navigateur peut souvent envoyer une demande d'API directement au serveur de Google en contournant votre serveur.

En quoi l'API de cet agenda Google est-elle différente de l'API de tout autre serveur distant?

En termes techniques , la différence réside dans le format de la demande et de la réponse.

Pour afficher l'intégralité de la page Web, votre navigateur attend une réponse en HTML, qui contient du code de présentation, tandis que l'appel à l'API de Google Agenda renvoie simplement les données - probablement dans un format tel que JSON .

Si le serveur de votre site Web effectue la demande d'API, le serveur de votre site Web est le client (de la même manière que votre navigateur est le client lorsque vous l'utilisez pour accéder à un site Web).

Du point de vue de vos utilisateurs, les API leur permettent de terminer l'action sans quitter votre site Web.

La plupart des sites Web modernes utilisent au moins certaines API tierces.

De nombreux problèmes ont déjà une solution tierce, que ce soit sous la forme d'une bibliothèque ou d'un service. Il est souvent plus simple et plus fiable d'utiliser une solution existante.

Il n'est pas rare que les équipes de développement divisent leur application en plusieurs serveurs qui se parlent via des API. Les serveurs qui exécutent des fonctions d'assistance pour le serveur d'applications principal sont généralement appelés microservices .

Pour résumer, lorsqu'une entreprise propose une API à ses clients, cela signifie simplement qu'elle a construit un ensemble d'URL dédiées qui renvoient des réponses de données pures - ce qui signifie que les réponses ne contiendront pas le type de surcharge de présentation que vous attendez d'un interface utilisateur graphique comme un site Web .

Pouvez-vous faire ces demandes avec votre navigateur? Souvent oui. Étant donné que la transmission HTTP réelle se produit sous forme de texte, votre navigateur fera toujours de son mieux pour afficher la réponse.

Par exemple, vous pouvez accéder à l'API de GitHub directement avec votre navigateur sans même avoir besoin d'un jeton d'accès. Voici la réponse JSON que vous obtenez lorsque vous visitez la route API d'un utilisateur GitHub dans votre navigateur (//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"}

Le navigateur semble avoir très bien affiché une réponse JSON. Une réponse JSON comme celle-ci est prête à être utilisée dans votre code. Il est facile d'extraire des données de ce texte. Ensuite, vous pouvez faire ce que vous voulez avec les données.

A signifie «Application»

Pour terminer, jetons quelques exemples supplémentaires d'API.

«Application» peut désigner plusieurs choses. En voici quelques-uns dans le contexte de l'API:

  1. Un logiciel avec une fonction distincte.
  2. Le serveur entier, toute l'application ou juste une petite partie d'une application.

Fondamentalement, tout logiciel qui peut être distinctement séparé de son environnement peut être un «A» dans l'API, et aura probablement aussi une sorte d'API.

Disons que vous utilisez une bibliothèque tierce dans votre code. Une fois incorporée à votre code, une bibliothèque devient une partie de votre application globale. Étant un logiciel distinct, la bibliothèque aurait probablement une API qui lui permettrait d'interagir avec le reste de votre code.

Voici un autre exemple: dans la conception orientée objet , le code est organisé en objets. Votre application peut avoir des centaines d'objets définis qui peuvent interagir les uns avec les autres.

Chaque objet possède une API - un ensemble de méthodes et de propriétés publiques qu'il utilise pour interagir avec d'autres objets de votre application.

An object may also have inner logic that is private, meaning that it’shiddenfrom the outside scope (and not an API).

From what we have covered, I hope you take away the broader meaning of API as well as the more common uses of the term today.

Interesting Resources (stuff that I left out but is still very cool):

A great youtube video on DNS (Domain Name System)

HTTP protocol basics

An Awesome Khan Academy video on Object Oriented Design Principles