Guida alla creazione e al test di API REST con JSON Server
Crea in 10 minuti un backend finto ma realistico per testare la tua app frontend: da Node.js a CRUD, filtri, paginazione e Thunder Client. Senza database, senza stress.
db.json strutturato e lanciare il server su porta 3000.1. Introduzione — perché JSON Server è il tuo migliore amico
JSON Server è un server REST fake completo che trasforma un semplice file db.json in API CRUD reali in meno di 30 secondi.
Nel moderno sviluppo web non puoi aspettare che il backend sia pronto per iniziare il frontend. JSON Server risolve questo collo di bottiglia: è uno strumento leggerissimo che crea endpoint REST a partire da un JSON, supporta GET, POST, PUT, PATCH, DELETE, filtri e paginazione.
Funziona grazie a Node.js, il runtime JavaScript che esegue JS fuori dal browser. Con Node.js arriva npm (Node Package Manager), il gestore di pacchetti che useremo per installare json-server. In classe lo uso sempre per farvi capire le API senza dover configurare MySQL o PHP.
Stiamo sviluppando una app per la gestione dei compiti. Invece di aspettare il backend in PHP, creiamo in 2 minuti un db.json con studenti e compiti. Il frontend in React può già fare fetch, mostrare liste, aggiungere compiti. Quando il backend reale sarà pronto, cambiamo solo l'URL base.
Non installare mai JSON Server globalmente se lavori su progetti scolastici condivisi su GitHub. Usa l'installazione locale --save-dev così ogni compagno avrà la stessa versione con npm install. All'esame ti chiedo sempre: differenza tra dipendenza di sviluppo e di produzione.
2. Installazione di Node.js e npm — senza errori
Primo passo: avere Node.js. Senza di esso, nessun npm e nessun JSON Server.
Procedura ufficiale
- Vai su https://nodejs.org/en e scarica la versione LTS (Long Term Support) — è la più stabile.
- Avvia l'installer e spunta l'opzione “Automatically install the necessary tools” su Windows.
- Chiudi e riapri il terminale / VS Code.
Se node -v non viene riconosciuto dopo l'installazione, hai dimenticato di riavviare il terminale o VS Code. Su Windows, a volte serve anche riavviare il PC perché il PATH venga aggiornato. Non reinstallare subito — chiudi tutto e riprova.
Se entrambi i comandi restituiscono un numero di versione (es. v20.x), Node.js e npm sono pronti. Non serve altro. Sei pronto per creare il progetto.
3. Creazione del progetto e installazione JSON Server
1. Inizializzare la cartella di progetto
Crea una cartella dedicata, ad esempio REST_API, e aprila direttamente in Visual Studio Code con il comando rapido:
Dal terminale integrato di VS Code (CTRL+ò), inizializza il progetto Node:
Questo comando crea il file package.json, la carta d'identità del progetto: contiene nome, versione, script e dipendenze.
Spiego sempre in classe: npm init -y è come dire “accetto tutto di default”. In un progetto reale compileresti i campi a mano, ma per una guida didattica va benissimo così. Ricorda: package.json va sempre su GitHub, node_modules mai.
2. Installazione di JSON Server
Installazione locale
Installa solo per questo progetto, salvata in devDependencies. Ideale per lavori di gruppo.
Installazione globale
Disponibile ovunque nel sistema con comando diretto. Comoda ma meno riproducibile.
Con npx (zero install)
Usa npx json-server senza installare nulla. Perfetto per test al volo.
4. Il file db.json — progettare dati realistici
Ogni chiave di primo livello in db.json diventa automaticamente una risorsa REST con endpoint /chiave. Es: "users" → /users.
Nella cartella REST_API crea un file chiamato db.json. Questo sarà il tuo database finto. Metti dati credibili, non aaa, bbb — ti serviranno per testare il frontend.
Nota il campo userId in posts. JSON Server capisce le relazioni! Se chiami /users/1/posts ottieni tutti i post di Mario. Se chiami /posts?userId=1 filtri. È perfetto per spiegare le foreign key senza SQL.
Dimenticare l'id univoco. Se metti due oggetti con stesso id, JSON Server va in confusione e la POST può sovrascrivere. Usa sempre id numerici incrementali e lascia che sia il server ad assegnarli nelle POST (non inviare l'id nel body).
5. Avvio del server e prima esplorazione
Ora la magia. Con un solo comando trasformi il JSON in API vere.
Vuoi essere più professionale? Aggiungi uno script in package.json:
E poi lancia:
Uso sempre --delay 800 quando spiego le loading spinner in React. Così gli studenti vedono davvero il caricamento e capiscono perché serve uno stato isLoading. Senza delay sembra tutto istantaneo e non si impara.
Apri il browser su http://localhost:3000: vedrai una pagina di benvenuto con tutte le rotte disponibili. Clicca su /users e vedrai il JSON.
6. Test degli endpoint — CRUD con Thunder Client
Create (POST) – Read (GET) – Update (PUT/PATCH) – Delete (DELETE). Sono il cuore di ogni API REST.
Per testare le API puoi usare Thunder Client (estensione VS Code, più leggera di Postman) o Postman. Io consiglio Thunder Client in classe perché non richiede account.
| Operazione | Metodo | Endpoint | Cosa fa |
|---|---|---|---|
| Lettura | GET | /users | Restituisce tutti gli utenti |
| Dettaglio | GET | /users/1 | Singolo utente con id=1 |
| Creazione | POST | /users | Crea nuovo utente, id auto-incrementale |
| Aggiornamento totale | PUT | /users/1 | Sostituisce tutto l'oggetto |
| Aggiornamento parziale | PATCH | /users/1 | Aggiorna solo i campi inviati |
| Eliminazione | DELETE | /users/1 | Cancella la risorsa |
1. Lettura (Read)
In React farai: fetch('http://localhost:3000/users').then(r=>r.json()).then(setUsers). Se la lista non appare, apri prima il browser sull'endpoint per verificare che il server sia attivo. Il 90% degli errori è server spento.
2. Creazione (Create)
Non inviare l'id nel body della POST. JSON Server lo genera da solo. Se lo invii, potresti creare duplicati o conflitti. Lascia che sia il server a decidere l'id — come fa un vero backend.
3. Aggiornamento (Update) — PUT vs PATCH
PUT sostituisce l'intera risorsa (devi inviare tutti i campi). PATCH aggiorna solo i campi che invii (più sicuro).
All'interrogazione chiedo sempre: differenza tra PUT e PATCH? Risposta da 10: PUT è idempotente e sostituisce tutto, PATCH è parziale e più efficiente. In JSON Server puoi usare entrambi — in produzione, usa PATCH per non rischiare di cancellare campi.
4. Eliminazione (Delete)
7. Filtri avanzati, paginazione e best practice
JSON Server non è solo CRUD base. Supporta query potenti che userai nel frontend reale.
_page e _limit
Usali per implementare infinite scroll o paginazione classica senza caricare 1000 record.
userId + _embed
/users?_embed=posts include i post dentro ogni utente. Comodo per dashboard.
Non è per produzione!
JSON Server scrive su file. Perfetto per prototipi, non per 10.000 utenti reali.
Creiamo una barra di ricerca: fetch('/users?q=' + searchTerm). Con un input e un debounce di 300ms hai una ricerca live funzionante. Gli studenti capiscono subito il valore delle query string.
8. Verifica pratica
🔬 Attività — Crea la tua prima API per un gestionale
Obiettivo: costruire da zero un backend finto per un'app di gestione corsi.
- Crea cartella
corsi-its, inizializza connpm init -ye installajson-serverin dev. - Crea
db.jsoncon due risorse:corsi(id, nome, ore, docente) estudenti(id, nome, corsoId). - Avvia il server su porta 3000 e verifica che
http://localhost:3000/corsirisponda. - Con Thunder Client: GET tutti i corsi, POST un nuovo corso, PATCH per cambiare docente, DELETE di un corso di test.
- Testa:
/studenti?corsoId=1e/corsi?_sort=ore&_order=desc. Fai screenshot delle risposte.
Soluzione: Il server deve mostrare Resources: /corsi /studenti. POST deve restituire 201 con id auto-generato. Se vedi 404, controlla di aver scritto db.json nella root e non in una sottocartella. Se la DELETE non cancella, verifica di non avere il file aperto in sola lettura.
Valutazione: 2 punti per installazione corretta, 3 punti per db.json ben strutturato, 3 punti per CRUD funzionante, 2 punti per filtri. Bonus se usi --delay e mostri lo spinner.
