Recentemente ho lavorato con un server API restful e ho riscontrato un problema con la gestione dell'errore del database.
L'approccio di base è ogni volta che si verifica un'eccezione SQL, il server restituirà "500" al client e il client non avrà idea di cosa non funzioni all'interno del server. Va bene per gli errori del server. Ma a volte, gli errori vengono creati dall'input dell'utente, soprattutto in caso di violazione di un vincolo univoco e riferimento non valido, ed è necessario restituire un errore più facile da usare.
Cosa devo fare per gestire correttamente questi casi? Come capisco l'analisi del messaggio SQL è un grande no. Il mio attuale approccio è aggiungere 1 ulteriore livello di validazione per verificare questi vincoli. Ciò comporterà l'esecuzione della convalida 2 volte, 1 a livello di applicazione e 1 a livello di database, il che è in teoria piuttosto inefficiente. Quindi ci sono approcci migliori?