Sobes.tech
Junior

Qu'est-ce que REST ?

sobes.tech IA

Réponse de l'IA

REST (Transfer d’État Représentatif) est un style architectural pour construire des systèmes distribués, principalement utilisé lors de la conception de services web. Il repose sur un ensemble de principes et de contraintes qui définissent comment les ressources web interagissent entre elles.

Principes clés de REST:

  • Client-serveur : séparation claire des responsabilités entre le client et le serveur.
  • Sans état (stateless) : le serveur ne stocke pas d’informations sur l’état du client entre les requêtes. Chaque requête contient toutes les informations nécessaires pour le traitement.
  • Cacheable (métadonnées de cache) : les clients peuvent mettre en cache les réponses du serveur pour améliorer la performance. Le serveur indique explicitement si la réponse peut être mise en cache.
  • Système en couches : le client peut interagir avec une couche intermédiaire (par exemple, proxy, équilibrage de charge) sans le savoir.
  • Code à la demande (optionnel) : le serveur peut transférer du code exécutable au client (par exemple, JavaScript), étendant la fonctionnalité du client.
  • Interface uniforme : principe le plus important, comprenant:
    • Identification des ressources (URI).
    • Manipulation des ressources via des représentations (échange de données dans un format défini, par exemple JSON, XML).
    • Messages auto-descriptifs (les messages contiennent toutes les informations nécessaires à leur compréhension).
    • HATEOAS (Hypermedia as the Engine of Application State) : le client navigue entre les états de l’application en utilisant des hyperliens contenus dans les réponses du serveur.

API RESTful est une implémentation du style REST pour les services web, utilisant les méthodes HTTP standards (GET, POST, PUT, DELETE) pour manipuler les ressources.

// Exemple d’utilisation des méthodes HTTP dans une API RESTful
// Obtenir une ressource
// GET /api/products/1

// Créer une ressource
// POST /api/products
// Corps : { "name": "Nouveau Produit", "price": 10.50 }

// Mettre à jour une ressource
// PUT /api/products/1
// Corps : { "name": "Produit Mis à jour", "price": 11.00 }

// Supprimer une ressource
// DELETE /api/products/1