Sobes.tech
Junior

Cos'è REST?

sobes.tech AI

Risposta dell'AI

REST (Transfer di Stato Rappresentazionale) è uno stile architettonico per costruire sistemi distribuiti, principalmente utilizzato nella progettazione di servizi web. Si basa su un insieme di principi e restrizioni che definiscono come le risorse web interagiscono tra loro.

Principi chiave di REST:

  • Client-server: Separazione chiara delle responsabilità tra client e server.
  • Stateless (senza stato): Il server non memorizza informazioni sullo stato del client tra le richieste. Ogni richiesta contiene tutte le informazioni necessarie per l'elaborazione.
  • Cacheable (caching): I client possono memorizzare nella cache le risposte del server per migliorare le prestazioni. Il server indica esplicitamente se la risposta può essere memorizzata nella cache.
  • Sistema a strati: Il client può interagire con uno strato intermedio (ad esempio, proxy, bilanciatore di carico) senza saperlo.
  • Codice su richiesta (opzionale): Il server può trasferire codice eseguibile al client (ad esempio, JavaScript), ampliando le funzionalità del client.
  • Interfaccia uniforme: Il principio più importante, che include:
    • Identificazione delle risorse (URI).
    • Manipolazione delle risorse tramite rappresentazioni (scambio di dati in un formato definito, ad esempio JSON, XML).
    • Messaggi auto-descrittivi (i messaggi contengono tutte le informazioni necessarie per la loro comprensione).
    • HATEOAS (Hypermedia as the Engine of Application State): Il client naviga tra gli stati dell'applicazione usando i collegamenti ipertestuali contenuti nelle risposte del server.

API RESTful è un'implementazione dello stile REST per i servizi web, che utilizza metodi HTTP standard (GET, POST, PUT, DELETE) per lavorare con le risorse.

// Esempio di utilizzo dei metodi HTTP in API RESTful
// Ottenere risorsa
// GET /api/products/1

// Creare risorsa
// POST /api/products
// Corpo: { "name": "Nuovo Prodotto", "price": 10.50 }

// Aggiornare risorsa
// PUT /api/products/1
// Corpo: { "name": "Prodotto Aggiornato", "price": 11.00 }

// Eliminare risorsa
// DELETE /api/products/1