Quindi sto affrontando un problema con la gestione di tutti i tipi di eccezioni all'interno di spring-boot applicazione. Fondamentalmente il progetto è strutturato:
back-end (services, repositories) < ----- RestControllers < ---- UI (React\Angular)
L'essenza è che UI dipende da Rest API wile resto API dipende da Back-end services
Ora - Rest API è progettato attorno ai propri servizi RISORSE e back-end attorno ai propri DTO .
La convalida attuale viene eseguita in due punti: RestControllers e Services mentre UI mostra solo le risposte (errori di convalida).
Problema:
Il solito problema di validazione in RestController sta acquisendo resource valido. E questo è gestito bene con la combinazione di @Valid , JSR 303 Bean Validation e @ControllerAdvice . E questo si traduce in qualcosa di simile:
[ field: ... , error: ... ] ...
Ma per quanto riguarda altri problemi? Eccezioni al vincolo DB, ad es. ? Pertanto, la convalida può essere eseguita anche in service layer, ma le eccezioni non seguono più lo stesso standard di [ field: ... , error: ... ]. Anche l'eccezione generata da service deve essere tradotta in una risposta specifica RESOURCE . Ora c'è più di una risorsa di errore e questo continuerà a crescere.
Data la situazione simile, quali sono le migliori pratiche in tale situazione?