Qu'est-ce qu'une API REST ?

Une API REST (interface de programmation d'application Representational State Transfer) est un style architectural généralement considéré comme la norme pour concevoir et créer les applications en réseau qui alimentent le Web. Elle fournit un ensemble de règles et de contraintes qui, lorsqu'elles sont respectées, permettent de créer des services Web simples, évolutifs et faciles à intégrer.

Définition d'une API REST

Une API REST est une API qui respecte les principes de conception du style architectural REST. Le principe de base de REST est la notion de ressources, qui peuvent correspondre à n'importe quel élément d'information, comme un utilisateur, un produit, un document ou une collection d'éléments. 

Une API REST permet à une application cliente d'accéder à ces ressources et de les manipuler à l'aide d'un ensemble prédéfini d'opérations sans état.

Comment fonctionne une API REST ?

1. Le client envoie une requête

Une application cliente (comme une application mobile, un navigateur Web ou un autre serveur) envoie une requête à l'API pour effectuer une action. Cette requête est envoyée à une URL spécifique et inclut une méthode HTTP, des en-têtes avec des métadonnées et, parfois, un corps de requête avec des données.

2. Le serveur traite la requête

Le serveur reçoit et valide la requête, en confirmant que le client est authentifié et autorisé à effectuer l'action demandée. Il traite ensuite la requête, ce qui peut impliquer de récupérer des données à partir d'une base de données, de créer une ressource ou de mettre à jour une ressource existante.

3. Le serveur envoie une réponse

Après avoir traité la requête, le serveur renvoie une réponse au client. Cette réponse inclut un code d'état HTTP indiquant le résultat (par exemple, 200 OK en cas de réussite, 404 Not Found si la ressource n'existe pas, 401 Non autorisé en cas de problème de sécurité), ainsi que les données demandées dans le corps de la réponse.

4. Transfert de données

Les données transférées entre le client et le serveur sont une "représentation" de l'état de la ressource. JSON (JavaScript Object Notation) est le format le plus courant pour ces données, car il est léger, lisible par l'humain et facile à analyser pour les langages de programmation.

Architecture et composants d'une API REST

La puissance et l'évolutivité de REST proviennent d'un ensemble de contraintes architecturales qui guident sa conception. Un système qui respecte ces contraintes est considéré comme "RESTful".

Schéma du modèle d'une API REST

Ressources

Une ressource est un concept fondamental de REST. Il s'agit d'un objet avec un type, des données associées, des relations avec d'autres ressources et un ensemble de méthodes qui s'appliquent à cet objet. Par exemple, dans une API d'e-commerce, un "produit" ou un "client" serait une ressource.

URI (Uniform Resource Identifiers)

Chaque ressource est identifiée de manière unique par un URI. Une API bien conçue utilise des URI clairs, descriptifs et cohérents pour identifier ses ressources. Par exemple, /users peut identifier un ensemble d'utilisateurs, et /users/123 un utilisateur spécifique avec l'ID 123.

Représentations

Un client n'interagit pas directement avec la ressource, mais avec une représentation de cette ressource. Le format de représentation le plus courant est JSON, mais d'autres formats comme XML ou HTML peuvent également être utilisés. Cela permet de représenter l'état d'une ressource de manière flexible.

Caractéristique "sans état"

Chaque requête envoyée par un client au serveur doit contenir toutes les informations dont le serveur a besoin pour comprendre et traiter la requête. Le serveur ne stocke aucun contexte client ni aucun état de session entre les requêtes. Cette contrainte rend les API REST hautement évolutives, car n'importe quel serveur peut traiter n'importe quelle requête.

Architecture client-serveur

Le client et le serveur sont séparés, et l'API sert d'interface entre eux. Cette séparation des tâches permet à l'application côté client et à l'application côté serveur d'évoluer indépendamment.

Interface uniforme

REST nécessite une interface cohérente et uniforme entre le client et le serveur. Pour ce faire, REST utilise des méthodes HTTP standards, des URI pour identifier les ressources et l'hypermédia comme moteur de l'état de l'application (HATEOAS).

Exigences de mise en cache

Les réponses du serveur doivent être définies comme pouvant ou ne pouvant pas être mises en cache. Lorsqu'une réponse peut être mise en cache, un client ou un intermédiaire peut réutiliser cette réponse pour les requêtes identiques suivantes, ce qui peut améliorer considérablement les performances et réduire la charge du serveur.

Système en couches

Un client connecté à une API REST ne peut généralement pas savoir s'il est connecté directement au serveur final ou à un intermédiaire. Des serveurs intermédiaires, comme des passerelles API ou des équilibreurs de charge, peuvent être introduits dans l'architecture pour améliorer l'évolutivité, la sécurité et les performances.

Bonnes pratiques concernant les API REST

Les URI doivent représenter des ressources. Ils doivent donc utiliser des noms (au pluriel pour les collections, au singulier ou un ID pour un élément spécifique), et non des verbes. Par exemple, utilisez /users pour représenter tous les utilisateurs, et non /getAllUsers.

Utilisez les verbes HTTP standards pour représenter les actions : GET pour la récupération, POST pour la création, PUT pour les mises à jour et DELETE pour la suppression. Cela permet de créer une interface prévisible et cohérente.

L'un des principes clés de REST est qu'une réponse doit inclure des liens vers d'autres actions ou ressources associées. Cela permet au client de parcourir l'API de manière dynamique, sans avoir à coder en dur des formats d'URI.

Lorsque vous devez apporter des modifications destructives à une API, introduisez une nouvelle version. La pratique la plus courante consiste à inclure le numéro de version dans l'URI (par exemple, /api/v2/users). Les clients existants peuvent ainsi continuer à utiliser l'ancienne version, tandis que les nouveaux clients peuvent adopter la nouvelle.

Lorsqu'une requête échoue, fournissez un message d'erreur clair et utile dans le corps de la réponse, ainsi que le code d'état HTTP approprié (par exemple, 400 Requête incorrecte, 500 Erreur interne du serveur). Le développeur côté client peut ainsi comprendre d'où vient le problème.

Protégez votre API en implémentant une authentification robuste (OAuth 2.0 ou clés API, par exemple) pour vérifier l'identité du client et l'autorisation dont il dispose. Ainsi, le client n'aura accès qu'aux ressources qu'il est autorisé à consulter. Utilisez toujours TLS/SSL pour chiffrer le trafic.

Pour les points de terminaison qui peuvent renvoyer un grand nombre d'éléments, implémentez la pagination pour renvoyer les données en fragments faciles à gérer. Fournissez également des paramètres de requête pour permettre aux clients de filtrer et de trier les résultats, réduisant ainsi la quantité de données transférées.

Avantages de l'utilisation des API REST

Simplicité et lisibilité

Les API REST utilisent des méthodes HTTP standards et des URI lisibles par l'humain, ce qui les rend relativement faciles à apprendre, à utiliser et à déboguer pour les développeurs. La nature autodescriptive de l'interface simplifie les efforts d'intégration.

Évolutivité

La nature sans état de REST est un facteur clé d'évolutivité. Comme le serveur n'a pas besoin de gérer les sessions client, vous pouvez facilement répartir les requêtes sur plusieurs serveurs. Vous pouvez également ajouter de nouveaux serveurs pour gérer une charge accrue sans complexité.

Flexibilité

REST prend en charge différents formats de données, JSON étant le plus populaire en raison de sa légèreté et de sa compatibilité étendue. Cette flexibilité permet aux API REST d'être utilisées par un large éventail d'applications clientes, des navigateurs Web aux appareils mobiles en passant par les capteurs IoT.

Dissociation du client et du serveur

L'architecture client-serveur appliquée par REST crée une séparation claire des tâches. Cela permet aux développeurs de travailler indépendamment sur l'interface côté client et le backend côté serveur, ce qui peut accélérer les cycles de développement.

Indépendantes du langage

Comme REST est un style architectural basé sur le protocole HTTP standard, il peut être implémenté dans n'importe quel langage de programmation et utilisé par n'importe quel client capable d'envoyer des requêtes HTTP. Cela offre une interopérabilité maximale entre les différentes piles technologiques.

Exemples d'API REST

Exemple d'API publique

Un cas d'utilisation courant est celui d'une application météo mobile qui récupère les prévisions météorologiques actuelles pour un emplacement spécifique à partir d'une API météo publique.

L'application cliente envoie une requête HTTP GET au point de terminaison de l'API, en incluant l'emplacement et une clé API pour l'authentification.

curl

"https://api.weather-service.com/v1/current?location=94043&key=YOUR_API_KEY"

curl

"https://api.weather-service.com/v1/current?location=94043&key=YOUR_API_KEY"

Le serveur traite la requête, récupère les données météorologiques pour l'emplacement spécifié et renvoie une réponse JSON.

{

 "temperature": 20,

 "unit": "celsius",

 "condition": "Clear",

 "humidity": 55

}

{

 "temperature": 20,

 "unit": "celsius",

 "condition": "Clear",

 "humidity": 55

}

Exemple d'API interne

Dans une architecture de microservices, un service "produit" peut avoir besoin d'obtenir un prix mis à jour auprès d'un service "inventaire" avant de l'afficher sur un site d'e-commerce. 

Le service "produit" envoie une requête HTTP GET interne au point de terminaison de l'API du service "inventaire" pour un ID de produit spécifique.

curl

"http://inventory-service.internal/api/products/PN-5821/price"

curl

"http://inventory-service.internal/api/products/PN-5821/price"

Le service d'inventaire recherche le prix actuel et renvoie une réponse JSON simple.

{

"productId": "PN-5821",

"price": 1299.99,

"currency": "USD"

}

```

{

"productId": "PN-5821",

"price": 1299.99,

"currency": "USD"

}

```

Relevez vos plus grands défis avec Google Cloud

Les nouveaux clients bénéficient de 300 $ de crédits à dépenser sur Google Cloud.

Autres ressources

  • Google APIs Explorer est un outil interactif qui vous permet d'explorer et de tester différentes API REST Google directement depuis votre navigateur.
  • Cet article de blog fournit un guide complet des bonnes pratiques pour concevoir et développer des API Web RESTful.
  • Le parcours de formation Cloud Hero sur Google Cloud Skills Boost propose des ateliers pratiques pour acquérir une expérience concrète de la gestion des API.

Passez à l'étape suivante

Profitez de 300 $ de crédits gratuits et de plus de 20 produits Always Free pour commencer à créer des applications sur Google Cloud.

  • Faites des économies grâce à notre approche transparente concernant la tarification
  • Le paiement à l'usage de Google Cloud permet de réaliser des économies automatiques basées sur votre utilisation mensuelle et des tarifs réduits pour les ressources prépayées. Contactez-nous dès aujourd'hui afin d'obtenir un devis.
Google Cloud