Sto scrivendo un'API web di base in Java che fa quello che fanno quasi tutti gli altri: prendere input, convalidarlo, quindi eseguire operazioni CRUD sul DB. Ho scritto diverse API prima e ho già capito cosa costituisce una buona risposta al client.
Tuttavia, come la maggior parte delle API, ci sono diversi livelli di oggetti invocati tra l'oggetto API del client della porta principale e il codice che esegue effettivamente le query sul database. Ho sempre faticato a sapere quali oggetti di interazione del database dovessero tornare alle funzioni che li chiamano.
Immagino che in caso di errori lancerò delle eccezioni e le catturerò più in alto nello stack delle chiamate. Tuttavia, cosa restituisco in caso di successo? Ecco cosa ho usato prima:
- Crea - Restituisce un valore booleano che indica se la creazione ha avuto successo o meno
- Leggi - Restituisce l'oggetto richiesto
- Aggiorna - Restituisce un valore booleano che indica se l'aggiornamento è andato a buon fine o meno
- Elimina - Restituisce un valore booleano che indica se l'eliminazione ha avuto esito positivo o meno
Mi sento a mio agio con i ritorni Leggi ed Elimina, perché non riesco a pensare a cos'altro torneresti in quelle situazioni. Tuttavia, non ho idea di quale sarebbe la migliore pratica per i valori di ritorno dalle funzioni di creazione e aggiornamento. Dovrei restituire un nuovo oggetto con i valori aggiornati? Dovrei modificare l'oggetto che è stato passato? Dovrei semplicemente restituire un valore booleano che indica successo o fallimento?