Sobes.tech
Middle+

Parlez de la règle de l'interface uniforme (Uniform Interface).

sobes.tech IA

Réponse de l'IA

La règle de l’Interface Uniforme est l’une des six contraintes architecturales de REST. Elle prescrit que le système utilise une approche unique et standardisée pour l’interaction entre le client et le serveur. Cela simplifie et sépare l’architecture, améliore la visibilité et facilite le développement indépendant du client et du serveur.

Composants de l’Interface Uniforme :

  1. Identification des ressources : Les ressources doivent être identifiables de manière unique (généralement via URI). C’est la base pour une interaction standardisée. Exemple : /utilisateurs/123, /produits/ABC.
  2. Manipulation des ressources via leurs représentations : Le client reçoit une représentation de la ressource (par exemple, en JSON ou XML), qui contient suffisamment d’informations pour modifier ou supprimer la ressource sur le serveur. L’état de la ressource sur le serveur peut être modifié en envoyant la représentation modifiée.
  3. Messages auto-descriptifs : Chaque message (requête ou réponse) doit contenir suffisamment d’informations pour être entièrement compris sans le contexte de l’état du serveur ou d’autres requêtes. Cela inclut des métadonnées : type de contenu, informations de cache, liens vers d’autres ressources, etc.
    HTTP/1.1 200 OK
    Content-Type: application/json
    Cache-Control: max-age=3600
    
    {
      "name": "Exemple d’Utilisateur",
      "links": [
        {
          "rel": "self",
          "href": "/utilisateurs/123"
        }
      ]
    }
    
  4. Hypermedia en tant que moteur de l’état de l’application (HATEOAS) : Permet au client de naviguer dynamiquement entre les ressources, en se basant sur des liens hypermédia fournis par le serveur dans la réponse. Le client ne doit pas connaître tous les URI à l’avance, seulement le point d’entrée. Le serveur guide le client à travers les actions et ressources disponibles.
    {
      "orderId": "A123",
      "status": "en traitement",
      "links": [
        {
          "rel": "annuler",
          "href": "/commandes/A123/annuler",
          "method": "POST"
        },
        {
          "rel": "self",
          "href": "/commandes/A123"
        }
      ]
    }
    

Au lieu de chemins codés en dur, le client découvre la possibilité d’annuler une commande via la présence et le contenu du lien avec rel: "annuler".

Une interface uniforme est essentielle pour la scalabilité et l’évolution des systèmes RESTful, car elle réduit le couplage entre les composants.