Voglio portare la discussione che è iniziata nei nostri team e ottenere la tua opinione al riguardo.
Supponiamo di avere un account utente che potrebbe avere credenziali diverse per l'autenticazione e l'email associata da recuperare. Un utente ha la possibilità di iscriversi tramite e-mail o utilizzare il suo profilo social per completare la procedura di registrazione.
Come un'API di Rest dal back-end al client assomiglia a:
- Crea un account
- Autorizza
- Aggiorna dati utente
- Collega account social
- Registra email
- Verifica email
Inoltre, il nostro BE è distribuito e suddiviso tra diversi servizi / server / cluster. Quindi chiamate diverse sono legate a diversi punti finali. Inoltre abbiamo diversi client: applicazioni native mobili, applicazioni web.
Il solito flusso di registrazione cerca il client in questo modo:
- Chiedi all'utente per email
- Crea un account (Riposo)
- Autorizza (Riposo)
- Chiedi all'utente il nome visualizzato
- Aggiorna dati (Riposo)
- Registra email (Riposo)
E possibili chiamate future:
- Verifica email
- Collega account social all'utente
Con l'iscrizione a Facebook:
- Chiedi all'utente di accedere a FB
- Crea un account (Riposo)
- Autorizza (Riposo)
- Link FB (Rest)
- Registrare e verificare l'e-mail dell'utente FB (Rest)
- Aggiorna il nome utente in base ai dati FB (Rest)
Ma tutti questi passaggi sono possibili sul back-end. Quindi abbiamo proposto di avere un altro endpoint che nasconderà / combinerà chiamate diverse su BE e restituirà l'intero risultato del processo ai client:
- Chiedi all'utente login FB
- Nuovo utente con FB (Riposo proposto)
- BE sta facendo registrazione / collegamento email verificata / aggiornamento dati utente / autorizzazione
I professionisti per questo approccio:
- Niente più duplicazione delle funzionalità tra i client
- Velocizza il networking e l'esperienza utente
I contro per questo approccio:
- Lavoro aggiuntivo per il back-end
- Probabilmente gli scenari più complessi nei futuri aggiornamenti
Vorrei avere la tua opinione o esperienza in questa situazione. Soprattutto se hai già sperimentato il punto "Probabilmente la maggior parte degli scenari complessi in futuri aggiornamenti" da contro i motivi.