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 34
POST /api/product
: créer un produitPATCH /api/product/34
: mettre à jour le produit 34
DELETE /api/product/34
: supprimer le produit 34
On 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-urlencoded
multipart
Comme 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>