Qu'est-ce qu'une API? Explication des interfaces de programmation d'application

API signifie interface de programmation d'application, un concept qui s'applique partout, des outils de ligne de commande au code Java d'entreprise en passant par les applications Web Ruby on Rails. Une API est un moyen d'interagir par programmation avec un composant logiciel ou une ressource distincte.

À moins que vous n'écriviez chaque ligne de code à partir de zéro, vous allez interagir avec des composants logiciels externes, chacun avec sa propre API. Même si vous écrivez quelque chose entièrement à partir de zéro, une application logicielle bien conçue aura des API internes pour aider à organiser le code et rendre les composants plus réutilisables. Et il existe de nombreuses API publiques qui vous permettent d'exploiter des fonctionnalités développées ailleurs sur le Web.

Qu'est-ce qu'une API?

Une API est définie comme une spécification d'interactions possibles avec un composant logiciel. Qu'est-ce que ça veut dire exactement? Eh bien, imaginez qu'une voiture était un composant logiciel. Son API comprendrait des informations sur ce qu'il peut faire-accélérer, freiner, tourner à la radio, etc. Il comprendrait également des informations sur la façon dont vous pourriez faire faire ces choses. Par exemple, pour accélérer, vous mettez votre pied sur la pédale d'accélérateur et poussez.

L'API n'a pas à expliquer ce qui se passe à l'intérieur du moteur lorsque vous mettez le pied sur l'accélérateur. C'est pourquoi, si vous avez appris à conduire une voiture avec un moteur à combustion interne, vous pouvez prendre le volant d'une voiture électrique sans avoir à acquérir un tout nouvel ensemble de compétences. Les informations sur le quoi et le comment sont rassemblées dans la définition de l'API , qui est abstraite et distincte de la voiture elle-même.

Une chose à garder à l'esprit est que le nom de certaines API est souvent utilisé pour désigner à la fois la spécification des interactions et le composant logiciel réel avec lequel vous interagissez. L'expression «API Twitter», par exemple, fait non seulement référence à l'ensemble de règles d'interaction programmatique avec Twitter, mais est généralement comprise comme signifiant l'objet avec lequel vous interagissez, comme dans «Nous analysons les tweets que nous avons reçus de l'API Twitter. »

API comme couche d'abstraction

En ce qui concerne les logiciels, les API sont littéralement partout. Les API vont de pair avec l'un des concepts les plus fondamentaux de l'informatique: l'abstraction. L'abstraction n'est qu'un moyen d'organiser la complexité d'un système afin que des actions complexes puissent être gérées de manière simple. Pensez à cette abstraction comme à ces Amazon Dash Buttons, les circuits imprimés à bouton-poussoir à piles que vous pouvez utiliser pour commander des agrafes sur Amazon. Voici à quoi ils ressemblent:

Vous commandez un Dash Button d'Amazon et utilisez une application sur votre smartphone pour l'associer à votre réseau Wi-Fi, à votre compte Amazon et à un produit, par exemple, votre marque préférée de serviettes en papier. Ensuite, chaque fois que vous souhaitez commander plus de serviettes en papier, il vous suffit d'appuyer sur le bouton. Le Dash Button se connecte à Internet et envoie un message pour passer une commande sur votre compte. Quelques jours plus tard, des serviettes en papier arrivent à votre porte.

Comme une API, le Dash Button est une interface parfaitement simple qui cache toutes sortes de complexité dans les coulisses. L'ID du produit que vous avez commandé doit être extrait d'une base de données. Votre adresse de livraison doit être extraite de votre compte. Le centre de distribution le plus proche qui stocke vos serviettes en papier doit être déterminé, puis notifié pour retirer un article du stock disponible et l'emballer. Enfin, le colis doit être acheminé via une combinaison d'avions, de camions et de fourgonnettes avec d'autres colis de manière à garantir que tous les colis atteindront leur destination efficacement.

Imaginez maintenant que vous deviez coordonner toutes ces choses en tant que client. Vous ne commanderiez jamais de serviettes en papier parce que c'est trop compliqué et trop long et que vous avez mieux à faire. Heureusement, toute l'épreuve est abstraite loin de vous. Il existe une longue chaîne interconnectée de systèmes informatiques et de processus humains qui font apparaître ces serviettes en papier à votre porte, mais tout ce à quoi vous devez penser est d'appuyer sur un bouton.

Voici à quoi ressemblent les API pour les programmeurs. Ils prennent une énorme complexité et définissent un ensemble d'interactions relativement simple que vous pouvez utiliser au lieu de tout faire vous-même. Dans tout projet logiciel, vous utilisez probablement des dizaines, voire des centaines d'API directement, et chacune de ces API repose sur d'autres API, etc.

API publiques et intégration d'API

Les API sont un concept de longue date dans la programmation informatique et font partie des outils des développeurs depuis des années. Traditionnellement, les API étaient utilisées pour connecter des composants de code s'exécutant sur la même machine. Avec l'essor de la mise en réseau omniprésente, de plus en plus d'API publiques, parfois appelées API ouvertes, sont devenues disponibles. Les API publiques sont orientées vers l'extérieur et accessibles sur Internet, ce qui vous permet d'écrire du code qui interagit avec le code d'autres fournisseurs en ligne; ce processus est appelé intégration API.

Ces types de mashups de code permettent aux utilisateurs de mélanger et de faire correspondre les fonctionnalités de différents fournisseurs sur leurs propres systèmes. Par exemple, si vous utilisez le logiciel d'automatisation du marketing Marketo, vous pouvez y synchroniser vos données avec la fonctionnalité Salesforce CRM.

«Ouvert» ou «public» ne doit pas être interprété comme signifiant «gratuit» dans ce contexte. Vous devez toujours être un client Marketo et Salesforce pour que cela fonctionne. Mais la disponibilité de ces API fait de l'intégration un processus beaucoup plus simple qu'il ne le serait autrement. ( a une excellente liste d'API publiques que vous devriez connaître.)

Services Web et API

Vous vous souvenez peut-être du terme services w eb du début des années 2000 et pensez que l'idée d'une API ouverte semble assez similaire. En fait, un service Web est un type spécifique d'API ouverte, qui répond à un ensemble assez rigide de spécifications, notamment qu'elles soient spécifiées dans Web Services Description Language (WSDL), une variante XML.

Les services Web étaient destinés à être utilisés dans le cadre d'une architecture orientée services (SOA). Comme l'explique le blog des API nordiques, cela a donné aux services Web une mauvaise réputation, car les SOA n'ont jamais été à la hauteur de leur potentiel. Les progrès des techniques utilisées pour les communications de service à service, notamment REST plus léger et plus flexible, ont également laissé les services Web quelque peu à la traîne dans le monde des API publiques.

API REST

Les services Web ont été initialement conçus pour communiquer à l'aide de SOAP (Simple Object Access Protocol), un protocole de messagerie qui envoie des documents XML via HTTP. Aujourd'hui, cependant, la plupart des API Web utilisent REST (Representational State Transfer) comme style architectural.

REST a été officiellement introduit par Roy Fielding dans sa thèse de doctorat en 2000. C'est un ensemble de composants architecturaux, de principes de conception et d'interactions utilisés pour la construction de systèmes distribués qui impliquent des médias de tout type (texte, vidéo, etc.). À la base, REST est un style de construction de systèmes qui permet une communication et un affichage flexibles des informations sur le Web tout en fournissant la structure nécessaire pour créer facilement des composants à usage général.

Dans une API REST, une ressource peut être à peu près n'importe quoi, mais les exemples incluent un utilisateur, une liste de tweets et les résultats actuels d'une recherche de tweets. Chacune de ces ressources est adressable à un identifiant de ressource , qui dans le cas des API REST basées sur le Web est généralement une URL, telle que //api.twitter.com/1.1/users/show?screen_name=twitterdev. Lorsqu'une application demande une ressource à l'aide de l'identificateur, l'API fournit la représentation actuelle de cette ressource à l'application dans un format que l'application peut utiliser, tel qu'une image JPEG, une page HTML ou JSON.

L'un des grands différenciateurs de REST est qu'il implique l'envoi de données à l'application demandeuse. Bien que cela offre une grande flexibilité, permettant à l'application de faire ce qu'elle veut avec les données, cela se fait au détriment de l'efficacité. L'envoi de données sur le Web pour traitement est assez lent par rapport au traitement où résident les données, puis à l'envoi des résultats.

Bien entendu, le problème avec l'approche «efficace» est que les systèmes hébergeant les données auraient besoin de savoir à l'avance ce que les applications veulent en faire. Ainsi, afin de créer une API qui offre une utilisabilité et une flexibilité générales, REST est la voie à suivre.

Exemples d'API

Il existe de nombreuses API publiques avec lesquelles vous pouvez interagir, dont beaucoup proviennent de mastodontes de l'industrie. La possibilité d'accéder au code d'une société de plate-forme par programmation via une API est ce qui en fait une plate-forme, par essence. Certains exemples d'API importants incluent:

  • Les API Google , qui vous permettent de connecter votre code à l'ensemble des services Google, de Maps à Translate. Les API sont si importantes pour Google qu'elles ont acquis Apigee, une plateforme de gestion d'API leader.
  • Les API Facebook , qui vous permettent d'accéder par programme au graphique social et aux outils marketing de Facebook. (La société a limité les données utilisateur auxquelles vous pouvez accéder via ces API à la suite des retombées de Cambridge Analytica et d'autres scandales.)

Pour vraiment avoir une idée du fonctionnement des API, examinons en profondeur deux: l'API Java, que les développeurs Java utilisent pour interagir avec la plate-forme Java, et l'API Twitter, une API publique que vous utiliseriez pour interagir avec le réseau social. service de réseautage.

L'API Java

L'API Java est une bibliothèque de composants logiciels disponibles «prêts à l'emploi» pour quiconque a installé le kit de développement Java. Ces composants implémentent des tâches courantes et augmentent généralement la productivité car les programmeurs n'ont pas à recommencer à zéro à chaque fois. L'un des composants de base utilisés dans les logiciels est ce qu'on appelle une liste, qui, comme vous pouvez vous y attendre, garde la trace d'une liste d'éléments. L'API Java définit ce que vous pouvez faire avec une liste: ajouter des éléments, trier la liste, déterminer si un élément est dans la liste, etc. Elle spécifie également comment effectuer ces actions. Afin de trier la liste, vous devez spécifier comment vous voulez que la liste soit triée: par ordre alphabétique, décroissant numériquement, couleur du plus clair au plus terne, etc.

L'API Twitter

L'API Twitter est une API JSON basée sur le Web qui permet aux développeurs d'interagir par programmation avec les données Twitter. Contrairement à l'API Java, qui est incluse dans le kit de développement Java, l'API Twitter est une API Web. Il doit être consulté en effectuant des demandes sur Internet auprès des services hébergés par Twitter.

Avec une API Web comme celle de Twitter, votre application envoie une requête HTTP, tout comme le fait un navigateur Web. Mais au lieu que la réponse soit fournie sous forme de page Web, pour la compréhension humaine, elle est renvoyée dans un format que les applications peuvent facilement analyser. Différents formats existent à cet effet et Twitter utilise un format populaire et facile à utiliser appelé JSON. (Si vous n'êtes pas familier avec JSON, vous voudrez peut-être passer quelques minutes à le lire ici.)

L'un des éléments de base de Twitter est un tweet. L'API Twitter vous indique ce que vous pouvez faire avec les tweets: rechercher des tweets, créer un tweet, ajouter un tweet à vos favoris. Il vous indique également comment effectuer ces actions. Pour rechercher des tweets, vous devez préciser vos critères de recherche: termes ou hashtags à rechercher, géolocalisation, langue, etc.

Conception d'API

La conception d'API est le processus par lequel le «quoi» et le «comment» d'une API sont formulés. Comme pour tout ce qui peut être créé, différents niveaux de réflexion et de soin sont mis dans la conception d'API, ce qui entraîne des niveaux variables de qualité d'API. Les API bien conçues ont un comportement cohérent, tiennent compte de leur contexte et gardent à l'esprit les besoins de leurs utilisateurs.

Un comportement cohérent au sein d'une API a un impact considérable sur la vitesse à laquelle elle peut être apprise et sur la probabilité que les programmeurs commettent des erreurs lors de son utilisation. En règle générale, les API qui exécutent des actions similaires doivent se comporter de la même manière, quelles que soient leurs différences techniques. Pour un exemple d'API incohérente, examinons les deux façons d'ajouter un élément à une liste en Java:

Même si les deux méthodes d'ajout d'éléments à une liste font la même chose, leurs types de retour (booléen et void) sont différents. Les développeurs utilisant cette API doivent maintenant suivre quelle méthode renvoie quel type, ce qui rend l'API plus difficile à apprendre et son utilisation plus sujette aux erreurs. Cela signifie également que le code qui utilise ces méthodes devient moins flexible, car il doit changer si vous souhaitez changer la façon dont vous ajoutez des éléments.

La prise en compte du contexte est une autre forme de cohérence, bien qu'elle ait à voir avec des facteurs externes à l'API. Un excellent exemple non logiciel de ceci est la façon dont la règle de la route - circulation à droite ou circulation à gauche - influence la conception des voitures pour différents pays. Les concepteurs de voitures tiennent compte de ce facteur environnemental lors de la localisation du siège du conducteur sur le côté droit ou gauche de la voiture.