Sto costruendo un'applicazione web che recupererà i risultati da un server remoto e li userà per rendere alcuni grafici e mappe. Il server remoto è già stato implementato e contiene una grande quantità di API, scritte in Java Spring Framework
. Lo sviluppatore che li ha implementati mi ha dato accesso a un insieme di URL dell'endpoint non pubblici , che interrogherò e otterrò i risultati in formato JSON. Tieni presente che in un prossimo futuro alcune di queste API saranno sensibili e dovrebbero essere limitate solo agli utenti autenticati.
Da parte mia, sto sviluppando solo il frontend con ReactJS
. L'intera logica dei calcoli, la manutenzione dell'utente, l'autorizzazione / autenticazione come anche l'input dell'utente, avviene sul server remoto tramite queste chiamate API.
Ora, la mia domanda è questa: dove è un buon posto per mettere le chiamate al servizio web? Per quanto mi riguarda, ci sono due opzioni:
- Crea chiamate% co_de asincrone% nel codice
AJAX
esistente, che recupererà i dati richiesti e renderizzerà i grafici - Crea un secondo back-end, scritto in
ReactJS
framework, che eseguirà tutte queste chiamate API, isolandole in modo efficace (sono soggette a modifiche) dall'applicazioneDjango
e fornendo un modo per "nascondere" in modo sicuro le informazioni per quanto riguarda gli URL effettivi da un potenziale intruso. Il backend "parlerà" con il mio frontend tramite una serie di chiamate, diverse da quelle del server esterno.
Il modo più semplice e veloce è seguire il primo approccio. Ma è una buona pratica avere chiamate API sensibili, che a causa della natura dell'applicazione sono soggette a modifiche in qualsiasi momento, nel codice ReactJS
che è solo per il rendering lato client?
Avendo una seconda serie di chiamate nel mio back-end locale, mi è consentito disaccoppiare le API remote dalla mia applicazione, mantenerle più facilmente, cambiarle e proteggerle e rimuovere l'abilità da un utente finale di ispezionare il codice della pagina web e vedere gli URL effettivi in formato semplice.
So, naturalmente, che l'utente finale potrà vedere alcune chiamate API, ma sono più a mio agio nel vedere le mie API (entrare nel mio backend ), che dargli la possibilità di vedere (e forse usare) le API remote .
Ecco un semplice schizzo delle due alternative:
C'è qualche ovvio guadagno seguendo il secondo approccio o sto analizzando questo?