API (Application Programming Interface)
Définition
Une API est un ensemble de règles, de protocoles et d’outils pour créer des applications logicielles. Elle définit comment les différents composants logiciels communiquent entre eux — en spécifiant les méthodes, les formats de données et les conventions pour demander et recevoir des services.
Dans l’infrastructure moderne, les APIs sont l’interface principale pour gérer les ressources cloud, les conteneurs, les outils d’automatisation et les microservices.
Types d’API
- REST (Representational State Transfer) : HTTP-based, orientée ressources, sans état. Le plus courant pour les APIs web.
- GraphQL : Langage de requête pour les APIs, les clients demandent exactement les données dont ils ont besoin.
- gRPC : Framework RPC haute performance de Google utilisant Protocol Buffers et HTTP/2.
- SOAP : Protocole basé sur XML, ancien standard d’entreprise avec des contrats stricts (WSDL).
- WebSocket : Canal de communication persistant et bidirectionnel.
Concepts d’API
- Endpoint : URL où l’API est accessible
- Method : Verbe HTTP (GET, POST, PUT, DELETE, PATCH)
- Authentication : Clés API, OAuth, JWT, mTLS
- Rate Limiting : Throttling pour prévenir les abus
- Versioning : Préfixes
/v1/,/v2/ou basés sur les en-têtes - Webhook : Le serveur pousse des données vers une URL client lors d’événements
API dans l’infrastructure
- Cloud APIs : AWS EC2 API, Azure REST API, GCP Cloud API
- Container APIs : Docker Engine API, Kubernetes REST API
- Automation APIs : Modules Ansible, providers Terraform
- Monitoring APIs : Métriques Prometheus, Grafana API
Termes associés
- REST — style d’architecture API le plus courant
- GraphQL — style d’API alternatif basé sur les requêtes
- gRPC — framework RPC haute performance
- OAuth — authentification pour l’accès aux APIs
- CI/CD — les outils d’automatisation utilisent les APIs de manière extensive
Références
- Wikipedia: https://en.wikipedia.org/wiki/Application_programming_interface
- RESTful API guidelines: https://restfulapi.net/
- GraphQL: https://graphql.org/