
UneAPI Web est uneinterface de programmation d'application (API) pour unserveur Web ou unnavigateur Web. En tant que concept dedéveloppement Web, il peut être lié aucôté client d'uneapplication Web (y compris à travers unframework web).
Une API Webcôté client est une interface de programmation permettant d'étendre les fonctionnalités d'unnavigateur Web ou d'un autreclient HTTP. À l'origine, celles-ci se présentaient le plus souvent sous la forme d'extensions de navigateur natives, mais la plupart des API les plus récentes se basent sur des appelsJavaScript standardisées.
LaFondation Mozilla a créé sa spécification d'API Web qui est conçue pour aider à remplacer les applications mobiles natives par des applicationsHTML5[1],[2].
Google a créé son architectureNative Client qui est conçue pour aider à remplacer les plug-ins natifs non sécurisés par des extensions et des applications natives sécurisées enbac à sable. Ils l'ont également rendu portable en utilisant uncompilateurLLVMAOT modifié.
Une API Webcôté serveur est servie au moyen d'unserveur Web basé surHTTP. Elle se compose d'un ou plusieurspoints d'accès exposés publiquement répondant avec des données, généralement exprimé enJSON ouXML. UneAPI serveur (SAPI) n'est pas considérée comme une API Web côté serveur, sauf si elle est publiquement accessible par une application Web distante.
Les applications composites sont desapplications Web qui combinent l'utilisation de plusieurs API Web côté serveur[3],[4],[5]. Leswebhooks sont des API Web côté serveur qui prennent en entrée unidentificateur de ressource uniforme (URI) conçu pour être utilisé comme uncanal nommé distant ou un type derappel tel que le serveur agit en tant que 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 peer-to-peer.
Lespoints d'accès sont des aspects importants de l'interaction avec les API Web côté serveur, car ils spécifient où se trouvent les ressources accessibles par des logiciels tiers. Généralement l'accès se fait via une URI sur laquelle sont postées les requêtes HTTP, et dont la réponse est donc attendue. Les API Web peuvent être publiques ou privées, cette dernière nécessitant unjeton d'accès.
Les terminaux doivent être statiques, sinon le bon fonctionnement des logiciels qui interagissent avec eux ne peut être garanti. Si l'emplacement d'une ressource change (et avec lui le point de terminaison), alors le logiciel précédemment écrit tombera en panne, car la ressource requise ne peut plus être trouvée au même endroit. Comme les fournisseurs d'API souhaitent toujours mettre à jour leurs API Web, beaucoup ont introduit un système de gestion des versions dans l'URI qui pointe vers un point de terminaison.
Les API WebWeb 2.0 utilisent souvent des interactions machine telles queREST etSOAP. Les API Web RESTful utilisent des méthodesHTTP pour accéder aux ressources via des paramètres encodés en URL et utilisentJSON ouXML pour transmettre des données. En revanche, les protocolesSOAP sont normalisés par leW3C et imposent l'utilisation deXML comme format de charge utile, généralement viaHTTP. De plus, les API Web basées surSOAP utilisent lavalidation XML pour garantir l'intégrité structurelle des messages, en tirant parti desschémas XML fournis avec les documentsWSDL. Un documentWSDL définit avec précision les messages XML et les liaisons de transport d'unservice Web.
Les API Web serveur sont des interfaces permettant au monde extérieur d'interagir avec la logique métier. Pour de nombreuses entreprises, cette logique commerciale interne et lapropriété intellectuelle qui y est associée sont ce qui les distingue des autres entreprises et potentiellement ce qui leur donne un avantage concurrentiel. Ils ne veulent pas que ces informations soient exposées.
Cependant, il existe désormais des répertoires d'API Web côté serveur documentées populaires[6]. Il existe également des standards qui permettent d'universaliser les APIs, permettant d'accéder aux APIs sans consulter au préalable une documentation. LeW3C a notamment publié les standardsSolid dans ce sens.
Le nombre d'API Web disponibles n'a cessé d'augmenter au cours des dernières années, à mesure que les entreprises réalisent les opportunités de croissance associées à l'exécution d'une plate-forme ouverte, avec laquelle tout développeur peut interagir. ProgrammableWeb suit plus de 24 000 API Web disponibles en 2022, contre 105 en 2005[7].
Les API Web sont devenues omniprésentes. Il existe peu d'applications/services logiciels majeurs qui n'offrent pas une certaine forme d'API Web. L'une des formes les plus courantes d'interaction avec ces API Web consiste à intégrer des ressources externes, telles que des tweets, des commentaires Facebook, des vidéosYouTube, etc. En fait, il existe des entreprises très prospères, telles queDisqus, dont le service principal est de fournir des outils intégrables, tels qu'un système de commentaires riche en fonctionnalités[8]. Toutsite Web du TOP 100 des sites Web classés parAlexa Internet utilise des API et/ou fournit ses propres API, ce qui est un indicateur très distinct de l'échelle prodigieuse et de l'impact des API Web dans leur ensemble[9].
À mesure que le nombre d'API Web disponibles augmentait, des outilsopen source ont été développés pour fournir une recherche et une découverte plus sophistiquées. APIs.json fournit une description lisible par machine d'une API et de ses opérations, et le projet connexe APIs.io propose une liste publique consultable d'API basée sur le format de métadonnées APIs.json[10],[11].
De nombreuses entreprises et organisations s'appuient fortement sur leur infrastructure d'API Web pour servir leurs principaux clients commerciaux. En 2014,Netflix a reçu environ 5 milliards de demandes d'API, la plupart au sein de son API privée[12].
De nombreux gouvernements collectent beaucoup de données, et certains gouvernements ouvrent désormais l'accès à ces données. Les interfaces par lesquelles ces données sont généralement rendues accessibles sont les API Web. Les API Web permettent à tout développeur d'accéder de manière pratique à des données telles que "les données budgétaires, les travaux publics, la criminalité, les données juridiques et autres"[13].
Un exemple d'API Web populaire est l'APIAstronomy Picture of the Day exploitée par l'agence spatiale américaineNASA. Il s'agit d'une API côté serveur utilisée pour récupérer des photographies de l'espace ou d'autres images d'intérêt pour lesastronomes, ainsi que desmétadonnées sur les images.
Selon la documentation de l'API[14], l'API a un point de terminaison :
https://api.nasa.gov/planetary/apod
La documentation indique que ce point de terminaison accepte lesrequêtes GET. Il nécessite une information de l'utilisateur, uneclé API, et accepte plusieurs autres informations facultatives. Ces éléments d'information sont appelésparamètres. Les paramètres de cette API sont écrits dans un format connu sous le nom dechaîne de requête, qui est séparé par un point d'interrogation (? ) du point de terminaison. Uneesperluette (& ) sépare les paramètres de la chaîne de requête les uns des autres. Ensemble, le point de terminaison et la chaîne de requête forment uneURL qui détermine la manière dont l'API répondra. Cette URL est également connue sous le nom derequête ou d'appel d'API.
Dans l'exemple ci-dessous, deux paramètres sont transmis (outransmis) à l'API via la chaîne de requête. Le premier est la clé API requise et le second est un paramètre facultatif - la date de la photographie demandée.
https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY&date=1996-12-03
La visite de l'URL ci-dessus dans un navigateur Web lancera une requête GET, appelant l'API et affichant à l'utilisateur un résultat, appelévaleur de retour. Cette API renvoieJSON, un type deformat de données destiné à être compris par les ordinateurs, mais qui est également assez facile à lire pour un humain. Dans ce cas, le JSON contient des informations sur une photographie d'unenaine blanche :
{"date":"1996-12-03","explanation":"Like a butterfly,\r a white dwarf star begins its life\r by casting off a cocoon that enclosed its former self. In this\r analogy, however, the Sun would be\r a caterpillar\r and the ejected shell of gas would become the prettiest of all!\r The above cocoon, the planetary nebula\r designated NGC 2440, contains one of the hottest white dwarf stars known.\r The white dwarf can be seen as the bright dot near the photo's\r center. Our Sun will eventually become a \"white dwarf butterfly\",\r but not for another 5 billion years. The above false color image recently entered the public domain\r and was post-processed by F. Hamilton.\r","hdurl":"https://apod.nasa.gov/apod/image/9612/ngc2440_hst2_big.jpg","media_type":"image","service_version":"v1","title":"Cocoon of a New White Dwarf\r\nCredit:","url":"https://apod.nasa.gov/apod/image/9612/ngc2440_hst2.jpg"}
Le retour d'API ci-dessus a été reformaté afin que les noms des éléments de données JSON, appelésclés, apparaissent au début de chaque ligne. La dernière de ces clés, nomméeurl, indique une URL qui pointe 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 :
Bien que cette API puisse être appelée par unutilisateur final avec un navigateur Web (comme dans cet exemple), elle est destinée à être appelée automatiquement par un logiciel ou par des programmeurs informatiques lors de l'écriture d'un logiciel. Le JSON est destiné à êtreparsé par un programme informatique, qui en extrairait l'URL de la photographie et les autres métadonnées. La photo résultante peut être intégrée à un site Web, envoyée automatiquement par SMS ou utilisée à toute autre fin envisagée par un développeur de logiciel.