Article de reference

API Web

Capture d'écran de la documentation de l'API Web rédigée par la NASA Une API web est une interface de programmation (API) destinée à un serveur web ou à un navigateur web . En d...

Capture d'écran de la documentation de l'API Web rédigée par la NASA

Une API web est une interface de programmation (API) destinée à un serveur web ou à un navigateur web . En développement web, elle se rapporte au côté client d'une application web (y compris les frameworks web utilisés). Une API web côté serveur comprend un ou plusieurs points d' accès publics à un système de messagerie requête-réponse défini, généralement exprimé en JSON ou XML via un serveur web HTTP .

Une API serveur (SAPI) n'est pas considérée comme une API Web côté serveur, sauf si elle est accessible publiquement par une application Web distante.

Côté client

Une API web côté client est une interface de programmation permettant d'étendre les fonctionnalités d'un navigateur web ou d'un autre client HTTP. À l'origine, il s'agissait le plus souvent d'extensions natives pour navigateurs , mais la plupart des API plus récentes ciblent des liaisons JavaScript standardisées .

La Fondation Mozilla a créé sa spécification WebAPI, conçue pour aider à remplacer les applications mobiles natives par des applications HTML5 .

Google a créé son architecture Native Client , conçue pour remplacer les plugins natifs non sécurisés par des extensions et applications natives sécurisées et exécutées dans un environnement isolé (sandbox ). Cette architecture est également portable grâce à l'utilisation d'un compilateur LLVM AOT modifié .

Côté serveur

Une API Web côté serveur se compose d'un ou plusieurs points d' accès publics à un système de messagerie requête-réponse défini , généralement exprimé en JSON ou XML . L'API Web est le plus souvent accessible via un serveur Web HTTP .

Les mashups sont des applications Web qui combinent l'utilisation de plusieurs API Web côté serveur. Les webhooks sont des API Web côté serveur qui prennent en entrée un identifiant de ressource uniforme (URI) conçu pour être utilisé comme un tube nommé distant ou un type de rappel de sorte que le serveur agisse comme un client pour déréférencer l'URI fourni et déclencher un événement sur un autre serveur qui gère cet événement, fournissant ainsi un type d' IPC pair à pair.

Points d'extrémité

Les points de terminaison sont essentiels à l'interaction avec les API Web côté serveur, car ils indiquent où les ressources sont accessibles aux logiciels tiers. L'accès se fait généralement via une URI à laquelle des requêtes HTTP sont envoyées, et dont la réponse est attendue. Les API Web peuvent être publiques ou privées ; ces dernières nécessitent un jeton d'accès .

Les points de terminaison doivent être statiques, sans quoi le bon fonctionnement des logiciels qui interagissent avec eux ne peut être garanti. Si l'emplacement d'une ressource change (et par conséquent le point de terminaison), les logiciels précédemment développés deviendront inopérants, car la ressource requise ne sera plus disponible au même emplacement. Les fournisseurs d'API souhaitant constamment mettre à jour leurs API web, beaucoup ont introduit un système de versionnage dans l'URI pointant vers un point de terminaison.

Ressources versus services

Les API Web 2.0 utilisent souvent des interactions automatisées telles que REST et SOAP . Les API RESTful utilisent les méthodes HTTP pour accéder aux ressources via des paramètres encodés dans l'URL et utilisent JSON ou XML pour transmettre les données. À l'inverse, les protocoles SOAP sont normalisés par le W3C et imposent l'utilisation de XML comme format de données, généralement via HTTP . De plus, les API Web basées sur SOAP utilisent la validation XML pour garantir l'intégrité structurelle des messages, en s'appuyant sur les schémas XML fournis par les documents WSDL . Un document WSDL définit précisément les messages XML et les liaisons de transport d'un service Web .

Documentation

Les API web côté serveur sont des interfaces permettant au monde extérieur d'interagir avec la logique métier. Pour de nombreuses entreprises, cette logique métier interne et la propriété intellectuelle qui y est associée constituent ce qui les distingue de leurs concurrents et leur confère potentiellement un avantage concurrentiel. Elles souhaitent que ces informations restent confidentielles. Cependant, pour fournir une API web de haute qualité, une documentation complète est indispensable . Twilio, par exemple, propose non seulement une documentation, mais y renvoie également depuis ses messages d'erreur .

Il existe cependant désormais des répertoires d'API Web côté serveur documentées populaires.

Croissance et impact

Le nombre d'API web disponibles a connu une croissance constante ces dernières années, les entreprises prenant conscience des opportunités de croissance offertes par une plateforme ouverte, accessible à tous les développeurs. ProgrammableWeb recense plus de 24 000 API web disponibles en 2022, contre seulement 105 en 2005.

Les API Web sont devenues omniprésentes. Rares sont les applications ou services logiciels majeurs qui ne proposent pas une forme ou une autre d'API Web. L'une des manières les plus courantes d'interagir avec ces API consiste à intégrer des ressources externes, telles que des tweets, des commentaires Facebook, des vidéos YouTube, etc. De fait, des entreprises très prospères, comme Disqus , proposent principalement des outils intégrables, notamment un système de commentaires riche en fonctionnalités. Tous les sites web figurant parmi les 100 premiers du classement Alexa utilisent des API et/ou fournissent leurs propres API, ce qui témoigne de l'ampleur et de l'impact considérables des API Web dans leur ensemble.

Avec la multiplication des API web disponibles, des outils open source ont été développés pour offrir des fonctionnalités de recherche et de découverte plus sophistiquées. APIs.json fournit une description lisible par machine d'une API et de ses opérations, et le projet associé APIs.io propose un répertoire public d'API consultable selon le format de métadonnées APIs.json.

Entreprise

Commercial

De nombreuses entreprises et organisations dépendent fortement de leur infrastructure d'API Web pour servir leurs principaux clients. En 2014, Netflix a reçu environ 5 milliards de requêtes API, la plupart provenant de son API privée.

Gouvernemental

De nombreux gouvernements collectent une grande quantité de données, et certains en ouvrent désormais l'accès. Ces données sont généralement accessibles via des API web. Ces API permettent à tout développeur d'accéder facilement à des données telles que « les données budgétaires, les données relatives aux travaux publics, à la criminalité, aux affaires juridiques et à d'autres organismes »

Exemple

L'API Astronomy Picture of the Day, exploitée par la NASA , est un exemple d'API web populaire . Il s'agit d'une API côté serveur permettant de récupérer des photographies de l'espace ou d'autres images d'intérêt pour les astronomes , ainsi que les métadonnées associées.

Selon la documentation de l'API, l'API possède un seul point de terminaison :

https://api.nasa.gov/planetary/apod

La documentation indique que ce point de terminaison accepte les requêtes GET . Il requiert une information de l'utilisateur, une clé API , et accepte plusieurs autres informations facultatives, appelées paramètres . Les paramètres de cette API sont exprimés dans une chaîne de requête , séparée du point de terminaison par un point d'interrogation (? ?). Une esperluette (& &) sépare les paramètres de la chaîne de requête. Ensemble, le point de terminaison et la chaîne de requête forment une URL qui détermine la réponse de l'API. Cette URL est également appelée requête ou appel d'API .

Dans l'exemple ci-dessous, deux paramètres sont transmis à l'API via la chaîne de requête. Le premier est la clé API obligatoire et le second, facultatif, la date de la photographie demandée.

https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY&date=1996-12-03

Visiter l'URL ci-dessus dans un navigateur web déclenchera une requête GET, interrogeant l'API et affichant à l'utilisateur un résultat, également appelé valeur de retour . Cette API renvoie du JSON , un format de données conçu pour être compris par les ordinateurs, mais également lisible par un humain. Dans ce cas précis, le JSON contient des informations sur une photographie d'une naine blanche .

{ "date" : "1996-12-03" , "explanation" : "Comme un papillon, une naine blanche commence sa vie en se débarrassant d'un cocon qui l'enveloppait. Dans cette analogie, cependant, le Soleil serait une chenille et l'enveloppe de gaz éjectée deviendrait la plus belle de toutes ! Le cocon ci-dessus, la nébuleuse planétaire NGC 2440, contient l'une des naines blanches les plus chaudes connues. La naine blanche est visible comme le point brillant près du centre de la photo. Notre Soleil deviendra un jour un « papillon naine blanche », mais pas avant 5 milliards d'années. L'image en fausses couleurs ci-dessus est récemment entrée dans le domaine public et a été post-traitée par F. Hamilton." , "hdurl" : "https://apod.nasa.gov/apod/image/9612/ngc2440_hst2_big.jpg" , "media_type" : "image" , "service_version" : "v1" , "title" : "Cocon d'une nouvelle naine blanche Crédit :" , "url" : "https://apod.nasa.gov/apod/image/9612/ngc2440_hst2.jpg" }

La réponse de l'API ci-dessus a été reformatée afin que les noms des éléments de données JSON, appelés clés , apparaissent au début de chaque ligne. La dernière de ces clés, nommée `photograph` url, indique une URL pointant vers une photographie :

https://apod.nasa.gov/apod/image/9612/ngc2440_hst2.jpg

En suivant l'URL ci-dessus, un utilisateur de navigateur web verrait cette photo :

Cocon d'une nouvelle naine blanche

Bien que cette API puisse être utilisée par un utilisateur final via un navigateur web (comme dans cet exemple), elle est conçue pour être appelée automatiquement par des logiciels ou par des développeurs lors de leur création. Le format JSON est destiné à être analysé par un programme informatique, qui extraira l'URL de la photographie ainsi que ses métadonnées. La photo ainsi obtenue pourra être intégrée à un site web, envoyée automatiquement par SMS ou utilisée à toute autre fin envisagée par un développeur.