Sobes.tech
Middle+

Parla della regola dell'interfaccia uniforme (Uniform Interface).

sobes.tech AI

Risposta dell'AI

La regola dell'Interfaccia Uniforme è una delle sei restrizioni architetturali di REST. Prescrive che il sistema utilizzi un approccio unico e standardizzato all'interazione tra client e server. Ciò semplifica e separa l'architettura, migliora la visibilità e facilita lo sviluppo indipendente di client e server.

Componenti dell'Interfaccia Uniforme:

  1. Identificazione delle risorse: Le risorse devono essere identificabili in modo univoco (solitamente tramite URI). È la base per un'interazione standardizzata. Esempio: /utenti/123, /prodotti/ABC.
  2. Manipolazione delle risorse tramite le loro rappresentazioni: Il client riceve una rappresentazione della risorsa (ad esempio in JSON o XML), che contiene informazioni sufficienti per modificare o eliminare la risorsa sul server. Lo stato della risorsa sul server può essere modificato inviando la rappresentazione modificata.
  3. Messaggi auto-descrittivi: Ogni messaggio (richiesta o risposta) deve contenere informazioni sufficienti per essere completamente compreso senza il contesto dello stato del server o altre richieste. Ciò include metadati: tipo di contenuto, informazioni di cache, link ad altre risorse, ecc.
    HTTP/1.1 200 OK
    Content-Type: application/json
    Cache-Control: max-age=3600
    
    {
      "name": "Esempio Utente",
      "links": [
        {
          "rel": "self",
          "href": "/utenti/123"
        }
      ]
    }
    
  4. Hypermedia come motore dello stato dell'applicazione (HATEOAS): Permette al client di navigare dinamicamente tra le risorse, basandosi sui link ipermediali forniti dal server nella risposta. Il client non deve conoscere tutti gli URI in anticipo, solo il punto di ingresso. Il server guida il client attraverso azioni e risorse disponibili.
    {
      "orderId": "A123",
      "status": "in elaborazione",
      "links": [
        {
          "rel": "annulla",
          "href": "/ordini/A123/annulla",
          "method": "POST"
        },
        {
          "rel": "self",
          "href": "/ordini/A123"
        }
      ]
    }
    

Invece di percorsi codificati rigidamente, il client scopre la possibilità di annullare un ordine tramite la presenza e il contenuto del link con rel: "annulla".

Un'interfaccia uniforme è fondamentale per la scalabilità e l'evoluzione dei sistemi RESTful, poiché riduce il legame tra i componenti.