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