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?