Une application est souvent composées de plusieurs composants qui communiquent entre eux. Par exemple, une interface graphique pourrait demander à un composant responsable de gérer l'identification des utilisateurs l'utilisateur actuellement connecté et sa ville, puis demander à un composant de cartographie de produire une carte qui lui même demandera à un composant de météo des prévisions.
Ces composants peuvent être hébergés dans le code de l'application (architecturés par exemple avec différentes classes); on parle alors d'application monolithique:
Bien que simple et performante (la communication entre les composants se faisant par des appels direct de méthodes), on peut émettre des critiques sur cette architecture:
Une autre approche plus moderne consiste en la création de multiples applications qui communiquent entre elles, on parle alors de microservices :
Ainsi:
On souhaite donc faire communiquer des applications ensemble, à travers ce qu'on appellera une API.
API: Application programming interface
Les problèmes sous-jacents sont:
Une API REST (representational state transfer), parfois appelé RESTful est un style d'architecture d'API basé sur HTTP. Une API REST est:
Une API REST expose une liste d'URLs qui peuvent être atteinte à l'aide de certains verbes (méthodes) HTTP. Par exemple:
GET /api/product/34: obtient les informations sur le produit 34POST /api/product: créer un produitPATCH /api/product/34: mettre à jour le produit 34DELETE /api/product/34: supprimer le produit 34On appelle cela des endpoint.
Remarque: dans une API REST, il est recommandé d'utiliser les méthodes HTTP pour désigner l'action que l'on souhaite utiliser.
On ne fera PAS: GET /api/delete/product/34
Mais plutôt DELETE /api/product/34
Il existe de nombreuses méthodes HTTP standard, les plus connues étant
GET, POST, PUT, PATCH et DELETE.
Une API REST peut recevoir des paramètres via les méthodes classiques:
/get/products?orderBy=price&direction=DESC,x-www-form-urlencodedmultipartComme mentionné précédemment, une API REST est sans état, ce qui implique qu'il n'y a pas de système de session.
Il existe plusieurs manières d'implémenter l'authentification à travers une API REST, qui reposent presque
toutes sur l'utilisation d'un jeton (token) d'identification.
Ce jeton peut être passé au serveur de plusieurs façons, notamment:
Authorization: Bearer <token>?api_key=<token>X-API-Key: <token>Cookie: X-API-Key=<token>