Un client deve verificare la presenza di elementi persistenti prima di modificarli?

1

Sto sviluppando un'applicazione Web MVC con un'interfaccia REST.

Il controller REST esegue azioni sugli elementi persistenti attraverso una classe di servizio, che traduce le eccezioni provenienti dal livello di persistenza.

Quando una richiesta riguarda un elemento che non esiste nel database, desidero restituire il codice 404, ma in realtà ciò non è possibile a causa della traduzione di eccezioni gestita dal servizio, che impedisce al controller di conoscere il motivo del problema.

La classe di servizio dovrebbe restituire una particolare eccezione solo per questo caso? Viceversa, il controllore dovrebbe verificare la presenza di elementi prima di qualsiasi azione?

    
posta aleric 13.01.2016 - 10:29
fonte

2 risposte

0

Il livello di servizio può tradurre l'eccezione ricevuta dai livelli inferiori per evitare l'accoppiamento tra il controller e il livello di persistenza. Ma nel fare quella traduzione, il livello Servizio dovrebbe non buttare via / oscurare informazioni che potrebbero essere rilevanti per gestire l'errore segnalato.

Quindi, il livello Servizio dovrebbe in generale avere un mapping uno a uno tra le eccezioni di persistenza e le eccezioni in cui vengono tradotte. Dovresti discostarti da questo solo se il livello di persistenza, per ragioni ereditarie, genera due diverse eccezioni per uno e lo stesso problema.

    
risposta data 13.01.2016 - 15:04
fonte
0

Nella maggior parte delle applicazioni, il servizio recupera l'oggetto di cui ha bisogno attraverso il livello di accesso ai dati (caricandolo in modo efficace in memoria) prima di poterlo modificare e salvarlo.

Se l'oggetto non esiste, l'oggetto di accesso ai dati probabilmente restituirà null. Forse non alzerò un'eccezione a quel punto, ma restituirò almeno un valore specifico del caso di errore. Il controller avrebbe capito e avrebbe risposto con un 404.

    
risposta data 13.01.2016 - 13:25
fonte

Leggi altre domande sui tag