Accueil > Blog > Développement > Explications simples : C’est quoi une API ?

Explications simples : C’est quoi une API ?

par | 18 Nov 2019 | 0 commentaires

Pour la plupart des personnes, API ressemble plus à un type de bière qu’à un outil informatique.

Pour le reste des personnes, une API, c’est « un truc qui sert à faire communiquer deux machins ».

Introduction

J’exagère bien sûr mais je me suis rendu compte qu’assez peu de personnes comprenaient vraiment le fonctionnement d’une API. Dans le monde informatique, c’est devenu un terme très usuel qu’on commence à mélanger un peu tout.

Vous avez peut-être déjà entendu parler des API Rest, très utilisées dans les technologies Web. Mais est-ce bien là le seul type d’API utile ?

Vous montez un projet, vous le pensez, vous passez des centaines d’heures dessus et quand vous le présentez, il arrive que la seule question qui intéresse votre auditoire, c’est « Alors, tu as un API ? ».

Réponse : « Euh, oui, non, ça dépend… Mais pour en faire quoi en fait ? »

Et c’est là que votre interlocuteur vous assène le « bah pour connecter ton truc avec mes machins ».

Ouch. Et c’est à ce moment que l’on se rend compte que :

  1. Les API sont un MUST HAVE. Le laisser-passer ultime qui peut nous ouvrir des portes de dingue.
  2. La plupart des gens croit savoir ce qu’est qu’une API. Et en fait, ils comprennent surtout la partie émergée de l’iceberg.

Alors commençons. Techniquement, API signifie Application Programming Interface.

Mais comment expliquez-vous l’API en langage clair ? Et y a-t-il une signification précise mais compréhensible par tout un chacun ? Tout d’abord, revenons en arrière et regardons comment internet lui-même fonctionne.

WWW et serveurs distants

Quand je pense au web, j’imagine un immense réseau de serveurs connectés.

Chaque page d’Internet est stockée quelque part sur un serveur distant. Un serveur distant n’est pas si mystique après tout – c’est juste un ordinateur (ou une partie d’un ordinateur) situé à distance qui est tout le temps connecté et qui est optimisé pour traiter des requêtes.

Pour mettre les choses en perspective, vous pourriez faire tourner un serveur sur votre ordinateur portable capable d’héberger un site web sur internet (ce qui est en fait, un serveur local pour web developpers utilisé pour concevoir des sites avant de les mettre en ligne).

Lorsque vous tapez www.facebook.com dans votre navigateur, une requête 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.

Ok, j’enfonce des portes ouvertes.

Pour votre navigateur, aussi connu sous le nom de client, il considère le serveur de Facebook est une API. Cela signifie que chaque fois que vous visitez une page sur le Web, vous interagissez avec cette API sur le 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 requêtes et envoie les réponses, comme une service de messagerie.

Les API au service de vos clients

Vous avez probablement entendu parler d’entreprises qui packagent des API sous forme de produits. Voici 50 APIs populaires qui sont utilisées de part le monde. De la lecture de musique sur Deezer au cours des la bourse Yahoo en passant par des flux vidéos de webcams du monde entier, vous n’imaginez pas la richesse du monde merveilleux des API.

Et c’est peut-être là le secret de son succès.

Exemple de scénario : Le site Web de votre petite entreprise comporte un formulaire utilisé pour inscrire les clients à des rendez-vous. Vous voulez donner à vos clients la possibilité de créer automatiquement un événement de l’agenda Google avec les détails de ce rendez-vous.

Utilisation de l’API : L’idée est de faire en sorte que le serveur de votre site web parle directement au serveur de Google avec une requête pour créer 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, telles qu’un message de confirmation à l’utilisateur.

Alternativement, votre navigateur peut souvent envoyer une requête API directement au serveur de Google en contournant votre serveur.

En quoi l’API de Google Agenda diffère-t-elle de l’API de tout autre serveur distant ?

Sur le plan technique, la différence réside dans le format de la demande et de la réponse.

Pour afficher vos pages webs, votre navigateur attend une réponse en HTML, qui contient du code de présentation, tandis que l’appel API de Google Calendar renvoie simplement les données – probablement dans un format comme JSON.

Si le serveur de votre site web effectue la requête API, alors le serveur de votre site est le client (comme votre navigateur est le client lorsque vous l’utilisez pour naviguer vers un site web).

Du point de vue de vos utilisateurs, les API leur permettent de réaliser l’action sans quitter votre site Web.

La plupart des sites Web modernes utilisent une certain nombre d’API tierces, et du point de vue d’un novice, on a du mal à en prendre conscience.

Un site web affiche une carte (Google maps), il fait appel à une API. J’ai un lien de partage, de retweet, etc. et je peux lire des commentaires Facebook directement sur un blog, c’est une API. Je m’inscris à une newsletter via un petit formulaire qui va m’enregistrer sur une liste Mailchimp ou autre, c’est une API.

De nombreux problèmes ont déjà une solution développé par quelqu’un d’autre, que ce soit sous la forme d’une bibliothèque ou d’un service. Et il est souvent plus facile et plus fiable d’utiliser une solution existante.

API comme mode séparation des processus

Il n’est pas rare que les équipes de développement divisent leur application en plusieurs serveurs qui communiquent entre eux via des API. Les serveurs qui exécutent des fonctions secondaires pour le serveur d’application principal sont communément appelés microservices.

En résumé, lorsqu’une entreprise offre une API à ses clients, cela signifie simplement qu’elle a créé 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 l’on peut attendre d’une interface utilisateur graphique comme un site Web.

Pouvez-vous faire ces demandes avec votre navigateur ? Souvent, oui. Comme la transmission HTTP s’effectue en 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 :

 {
  "login": "petrgazarov",
  "id": 5581195,
  "avatar_url": "https://avatars.githubusercontent.com/u/5581195?v=3",
  "gravatar_id": "",
  "url": "https://api.github.com/users/petrgazarov",
  "html_url": "https://github.com/petrgazarov",
  "followers_url": "https://api.github.com/users/petrgazarov/followers",
  "following_url": "https://api.github.com/users/petrgazarov/following{/other_user}",
  "gists_url": "https://api.github.com/users/petrgazarov/gists{/gist_id}",
  "starred_url": "https://api.github.com/users/petrgazarov/starred{/owner}{/repo}",
  "subscriptions_url": "https://api.github.com/users/petrgazarov/subscriptions",
  "organizations_url": "https://api.github.com/users/petrgazarov/orgs",
  "repos_url": "https://api.github.com/users/petrgazarov/repos",
  "events_url": "https://api.github.com/users/petrgazarov/events{/privacy}",
  "received_events_url": "https://api.github.com/users/petrgazarov/received_events",
  "type": "User",
  "site_admin": false,
  "name": "Petr Gazarov",
  "company": "PolicyGenius",
  "blog": "http://petrgazarov.com/",
  "location": "NYC",
  "email": "petrgazarov@gmail.com",
  "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 s’être très bien comporté en affichant 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.

D’ailleurs, un des prochains articles sera consacré au JSON et autres formats de transfert de données.

A comme « Application »

Pour conclure, ajoutons quelques autres exemples d’API.

Le terme « application » peut faire référence à beaucoup de choses. En voici quelques-unes dans le contexte des API :

  1. Un logiciel avec une fonction distincte.
  2. Le serveur entier, l’application entière, 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.

Supposons que vous utilisez une librairie tierce dans votre code. Une fois que vous l’aurez incorporée dans votre code, cette librairie fera partie intégrante de votre application globale. Comme il s’agit d’un logiciel distinct, la librairie 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 qu’il utilise pour interagir avec les autres objets de votre application.

Un objet peut aussi avoir une logique interne qui est privée, ce qui signifie qu’il est caché de l’extérieur (et non d’une API).

D’après ce que nous avons vu, j’espère que vous enlevez le sens plus large des IPA, euh non des API 😉 ainsi que les utilisations les plus courantes du terme aujourd’hui.

Cet article a été basé sur un article Medium

Ressources intéressantes

The API

Valentin Biasi

Valentin Biasi

Président fondateur

Data Scientist et ingénieur Machine Learning avec des compétences complémentaires en Data Engineering et en développement Python.

Après avoir finalisé mon doctorat en 2014, j’ai travaillé en recherche appliquée sur des méthodes de machine learning et de deep learning pour le compte de grands industriels du secteur aéronautique. Depuis mi-2019, je suis travailleur freelance et je suis totalement dédié à aider mes clients à développer leurs projets de science des données.

Popular Posts

Les 15 métriques DevOps que les entreprises doivent surveiller

Les 15 métriques DevOps que les entreprises doivent surveiller

Le DevOps s'est imposé dans la plupart des entreprises comme une stratégie pour livrer en continue des logiciels. Aujourd'hui, la stratégie DevOps est largement considéré comme un élément essentiel du processus de développement. Oui mais comment utiliser les métriques...

Que peut-on faire avec Python ? 3 applications de Python

Que peut-on faire avec Python ? 3 applications de Python

Si vous envisagez d'apprendre Python - ou si vous avez récemment commencé à l'apprendre - vous vous demandez peut-être : "Pourquoi devrais-je utiliser Python?" C'est une question plutôt délicate, car il existe de nombreuses applications pour Python. Python permet de...