Controlla se un controller sta facendo troppe cose

1

C'è un endpoint REST nella mia applicazione che gestisce la richiesta POST e quindi fa un post HTTP a un'altra applicazione esterna e quando la risorsa viene creata nella risorsa esterna, quindi creo un record nel mio database con l'ID risorsa creato esternamente.

Ad esempio, se un utente richiede di salvare una nuova auto, esiste un endpoint che gestisce tale richiesta, chiama l'API di registrazione esterna per creare un nuovo numero di registrazione e quindi popola il mio database con la nuova auto e l'ID di registrazione che ho ottenuto da questa API.

La mia domanda è dove dovrei mettere queste due logiche?

Lascia che il mio controller gestisca la richiesta di posta da parte dell'utente e chiami l'API esterna e poi quando ha successo, chiama il servizio Car per creare una nuova auto.

registrationID = registrationAPI.create() carService.create(registrationID)

o

Lascia che il mio controllore deleghi entrambe le attività al mio servizio auto e attenda il risultato, internamente il servizio auto gestisce entrambe le chiamate, ad esempio: carService.create(Car car)

Esistono modi migliori per gestire entrambi i casi?

    
posta CodeYogi 17.09.2017 - 12:23
fonte

1 risposta

7

Il tuo controllore dovrebbe fare una cosa e farlo bene

La creazione di una risorsa remota richiede di gestire e analizzare la richiesta, quindi di gestire la creazione remota, quindi di fare il db stuff. Questo sembra troppo responsabilità per il controller da solo.

In effetti, creare una nuova risorsa di dominio (esterna) dovrebbe coinvolgere il livello dominio (esposto tramite service laye r). Il livello dominio subappalta la gestione remota e la persistenza ad alcuni gateway oggetti. Il controller anteriore dovrebbe funzionare solo come gestore delle richieste.

La maggior parte dei link sopra si riferisce a Martin Fowler 's pattern di enterprise application architecture , che gestisce in modo completo questo tipo di aspetti architettonici.

    
risposta data 17.09.2017 - 12:39
fonte