Go
Con questa settima puntata chiudiamo la serie portando la nostra API a un livello di qualità adatto alla produzione. Affronteremo tre aspetti che distinguono un servizio robusto da un prototipo: la validazione rigorosa degli input, la restituzione di errori strutturati e coerenti, e la copertura con test automatici.
Go
Abbiamo dotato l'API di un sistema di autenticazione e autorizzazione completo e stateless. Abbiamo custodito le password con bcrypt, emesso e verificato token JWT con particolare attenzione alla sicurezza dell'algoritmo di firma, costruito l'endpoint di login con risposte prudenti alle credenziali errate, e protetto gli endpoint con middleware di autenticazione e controllo dei ruoli, sfruttando il context per trasportare l'identità dell'utente.
Go
I middleware ci hanno permesso di aggiungere comportamento trasversale a tutta l'API senza duplicare codice nei singoli gestori.
Go
L'archivio in memoria che abbiamo usato finora ha un difetto evidente: i dati svaniscono a ogni riavvio del server. In questa puntata introduciamo una persistenza reale, collegando l'API a un database relazionale.