Qu'est qu'une API ?
"Pour y accéder, j'utilise une lib 📚 mais j'aurais pu utiliser l'API 🌐"
En 2024, si vous développez des logiciels, la signification de cette phrase doit vous paraître évidente, voire très banale.
Il y a 20 ans, auprès du même public, elle aurait été très bizarre. Le mot "API" existait déjà mais il n'avait pas du tout le même sens.
Forcément, ça me pose des questions.
D'où vient le mot "API" ? Que signifiait-il à l'origine ? Comment a-t-il évolué ?
La première utilisation du terme "application program interface" semble être un papier de 1968 Data structures and techniques for remote computer graphics. L'idée qui y est exprimée est un découplage entre l'application et le matériel. L'interface de programmation est ici un moyen pour écrire une application sans se soucier des détails matériels.
hardware independence at the central computer means that a consistent application program interface could be maintained if that computer were replaced
En 1972, on retrouve ce terme et cette idée d'indépendance dans Implications of data independence on the architecture of database management systems. En fait, la majorité des papiers des années 70 qui utilisent le terme "application programming interface" semblent être relatifs aux bases de données : il s'agit de rendre les applications qui utilisent les données indépendantes des fonctions élémentaires d'accès à ces données.
Data independence is a relatively new concept in database management technology. In essence, the objective of data independence is the insulation of application programs from the underlying database management system.
[...]
As the application program interface is constrained significantly by virtue of the requirement for data independence the subsystem commonly known as the Database Manager assumes a functional responsibility not previously recognized within the scope of database management systems.
Les usages ont par la suite évolué pour inclure l'accès à toutes sortes de services mais toujours avec cette idée de découplage. La mise en oeuvre d'une API restait un détail. La plupart du temps, c'était des bibliothèques de fonctions. Mais ça pouvait aller plus loin. SQL n'est jamais qu'un langage qui fait partie de l'API d'accès à un système de gestio nde bases de données.
Et c'est le web 🕸️ qui a mis le bazar en y donnant un sens différent. Quand quelqu'un parle d'API aujourd'hui, on peut parier qu'il s'agit d'un service distant accessible via http. Même le gouvernement français s'est fendu d'une définition très restreinte d'API qui va dans ce sens.
API est un acronyme qui signifie (en anglais) Application Programming Interface, ce qui n’est... vraiment pas très clair !
[...]
Une API, permet à un ordinateur de demander une information à un autre ordinateur, par internet.
C'est vraiment dommage d'avoir pondu ce truc de manière trop vulgarisée. Et, franchement, si vous trouvez qu'une interface de programmation d'applications c'est pas très clair, arrêtez tout de suite d'écrire du code.
Il est plus utile de parler d'API pour une interface utilisable par un logiciel afin d'accéder à un service implémenté par un tiers.
Que ce service soit embarqué localement dans l'application ou tournant sur un ordinateur à l'autre bout de la terre, c'est un détail. Si ce détail a besoin d'être précisé, autant le décrire avec des termes précis.
Une API peut prendre la forme d'une bibliothèque de fonctions, d'un langage dédié, d'un service accessible par un protocole réseau, etc. mais ça ne change rien à sa nature qui est d'utiliser une abstraction pour accéder à quelque chose de compliqué de manière simplifiée.