Interface de programmation
En informatique, une interface de programmation d’applications ou interface de programmation applicative (souvent désignée par le terme API pour ) est un ensemble normalisé de classes, de méthodes, de fonctions et de constantes qui sert de façade par laquelle un logiciel offre des services à d'autres logiciels. Elle est offerte par une bibliothèque logicielle ou un service web, le plus souvent accompagnée d'une description qui spécifie comment des programmes consommateurs peuvent se servir des fonctionnalités du programme fournisseur.

On parle d'API à partir du moment où une entité informatique cherche à agir avec ou sur un système tiers, et que cette interaction se fait de manière normalisée en respectant les contraintes d'accès définies par le système tiers. On dit alors que le système tiers « expose une API ». 

À ce titre, des interactions aussi diverses que la signature d'une fonction, une URL, un RPC… sont parfois considérés comme des API (ou micro-API) à part entière.

Dans l'industrie contemporaine du logiciel, les applications informatiques se servent de nombreuses interfaces de programmation, car la programmation réutilise des briques de fonctionnalités fournies par des logiciels tiers. Cette construction par assemblage nécessite pour le programmeur de connaître la manière d’interagir avec les autres logiciels, qui dépend de leur interface de programmation. Le programmeur n'a pas besoin de connaître les détails de la logique interne du logiciel tiers, et celle-ci n'est pas nécessairement documentée par le fournisseur. Seule l'API est réellement nécessaire pour utiliser le système tiers en question.

Des logiciels tels que les systèmes d'exploitation, les systèmes de gestion de base de données, les langages de programmation, ou les serveurs d'applications comportent une ou plusieurs interfaces de programmation.

Description 

Une interface de programmation est une façade clairement délimitée par laquelle un logiciel offre des services à d'autres logiciels. L'objectif est de fournir une porte d'accès à une fonctionnalité en cachant les détails de la mise en œuvre. Une interface de programmation peut comporter des classes, des méthodes ou des fonctions, des types de données et des constantes. Le plus souvent, une interface de programmation est mise en œuvre par une bibliothèque logicielle qui fournit une solution à un problème informatique en faisant abstraction de son fonctionnement.

La description de l'interface de programmation spécifie comment des clients peuvent interagir avec un logiciel en mettant l'accent sur les fonctionnalités offertes par le logiciel et en cachant les détails de son fonctionnement. Une interface de programmation peut être utilisée dans de nombreux programmes et sert alors de jeu de construction, offrant des pièces de fonctionnalités qui peuvent être incorporées dans des applications. Les programmeurs créent des interfaces de programmation pour les autres programmeurs, pour l'industrie informatique, mais aussi parfois pour leurs propres besoins.

Utilisation 
La création et l'utilisation des interfaces de programmation est un sujet incontournable de la programmation contemporaine. Une application se sert généralement de nombreuses interfaces de programmation, mises en œuvre par des bibliothèques logicielles qui peuvent elles-mêmes se servir d'autres interfaces de programmation.

En architecture orientée services les applications peuvent dépendre de fonctionnalités tierces offertes par des logiciels via des interfaces de programmation mises en œuvre par des services web.

Les interfaces de programmation permettent de gagner du temps par la collaboration et la spécialisation des équipes de développement de logiciels. Par exemple  plus personne n'écrit un SGBD maison pour une application informatique. Les programmeurs réutilisent les SGBD existant dans le commerce, fournis par des entreprises spécialisées dans ce type de produit, et se concentrent sur la logique propre à leur application. De nombreux produits d'infrastructure sont ainsi disponibles sous forme de framework ou de bibliothèque.

Une interface de programmation permet par exemple à un programme d'accéder aux services offerts par le système d'exploitation qui héberge le programme. L'interface sockets est un exemple classique d'interface de programmation qui permet à un programme d'exploiter les possibilités de la couche réseau du système d'exploitation.

Une des interfaces les plus connues est la Windows API. C'est une collection de fonctions, de types de données et de constantes, en langage de programmation C (Windows ayant été essentiellement écrit en C, notamment le noyau, et un peu de C++), qui permet à des programmeurs de créer des applications pour les systèmes d'exploitation Windows. Elle offre la possibilité de manipuler des fichiers, des processus, communiquer par les réseaux et manipuler des interfaces graphiques.

Marché 
Dans l'industrie contemporaine du logiciel, les applications informatiques se servent de nombreux logiciels tiers, tels qu'un système d'exploitation, des bibliothèques standard, ou des serveurs d'application. Chacun de ces produits a sa propre interface de programmation. Ainsi chaque programmeur impliqué dans le développement de tels produits est impliqué, consciemment ou non, dans le business des interfaces de programmation. Du point de vue business une interface de programmation est un contrat par lequel un fournisseur de fonctionnalité décrit son offre, les fonctionnalités qu'il offre et les éventuelles limitations.

La construction par assemblage de logiciels nécessite pour le constructeur de savoir comment les pièces interagissent entre elles. Celui qui réalise l'assemblage n'a pas besoin de connaitre tous les détails des mécanismes internes d'une pièce, du moment qu'il connait son interface de programmation. L'interface de programmation est le minimum qu'un programmeur a besoin de connaitre pour pouvoir se servir d'une pièce de logiciel tierce. Pour une fonction c'est le nom de celle-ci, les paramètres et le type du résultat, ainsi que les effets observables de la fonction.

Une interface de programmation est distribuée sur le marché comme un produit logiciel ordinaire, régulièrement amélioré. La mise en œuvre des fonctionnalités utilisables à travers l'interface de programmation peut changer régulièrement, tout en maintenant la façade conforme au contrat.

Exemples d'API 
 Azure API (dont API App, API Management)
 Graph API de Facebook
 Google Maps API
 API de Salesforce

Exemples en fonction du domaine applicatif 
 graphisme 3D : OpenGL ou plus récemment Vulkan (Khronos Group), Direct3D (de la série DirectX de Microsoft), Mantle (AMD)
 manipulation de documents XML : SAX () et DOM ()
 accès à des bases de données : ODBC, JDBC
 cartographie et SIG: APIs OpenStreetMap

Fonctions des interfaces de programmation en Java 
Les interfaces de programmation peuvent avoir plusieurs fonctions. Par exemple, dans Java EE, on trouve les fonctions suivantes :
 API de communication synchrone / asynchrone
 API de connexions (annuaires, bases de données, progiciels de gestion intégrés)
 API de gestion des transactions
 API de gestion des courriels
 API de sérialisation par XML
 API d'analyse XML
 API de gestion des registres XML (par exemple ebXML)

Des API peuvent servir à simplifier l'accès à d'autres API
 API JAXP permet facilement l'accès à différentes implémentations des API SAX et DOM (XML4J, Apache Xerces).

Données véhiculées 
Les interfaces de programmation peuvent véhiculer des métadonnées.

 Dans les interfaces prévues par les progiciels de gestion intégrée. Exemples :  et .
 Dans les langages de programmation. Exemple du langage Java : API d'accès et de traitement des données enregistrées dans une source de données.
 Dans les systèmes décisionnels. Exemple : Métadonnées dans les API de SAS.
 Dans les bases de données relationnelles. Exemple : DB2 Cube.
 Dans les applications d'ingénierie des connaissances. Exemple .

API management  
L'API Management est une discipline, un outil de gestion des API, une solution informatique qui a pour vocation d'aider les organisations, les entreprises à exploiter et à publier au mieux les API sans mettre en péril le système d’information. C'est un moyen d’interconnecter de façon sécurisée des services internes et externes. En outre, l'API Management permet aussi d’avoir une certaine visibilité sur les demandes d’accès à ses APIs. Celui-ci sécurise les API exposées, facilite la gestion de leur cycle de vie, aide à piloter la consommation des API, outille le reporting pour le suivi des contrats. L'API Management implique donc la création de ressources d'assistance à l'utilisateur, qui définissent et documentent les API.

Notes et références

Voir aussi

Articles connexes 
 API Management
 Java ME
 Java EE
 Interface (informatique)
 Migration d'interfaces de programmation

Liens externes 
  SAX, Simple API for XML
  What is an API? Your guide to the Internet Business (R)evolution

 
Programmation informatique
Interopérabilité