Quali sono gli svantaggi dell'uso delle API RESTful?
REST è un approccio architettonico e significa che un sistema RESTful ha le seguenti proprietà:
- È client/server: la logica di business è disaccoppiata dalla presentazione. Quindi si può cambiare uno senza impattare l'altro. Il contro, aggiunge una latenza trascurabile, ma chi se ne frega, il web è la piattaforma e tutto è client/server.
- È stateless: Tutti i messaggi scambiati tra client e server hanno tutto il contesto necessario per sapere cosa fare con il messaggio. Questa visibilità ha diversi benefici: si può instradare un messaggio dove si vuole a seconda del suo contenuto e qualsiasi server può servire una richiesta. Quindi potete semplicemente scalare il vostro server creando diverse istanze di esso. Non è necessario inviare tutti i messaggi dallo stesso cliente o utente allo stesso server. E se volete ottimizzare il backend, potete indirizzare i messaggi a diversi server a seconda del messaggio. Per esempio, avere una richiesta intensiva di CPU ad un server e una intensiva di memoria ad un altro. I contro: il client sta inviando tutti i messaggi con informazioni ridondanti. Questo aggiunge larghezza di banda e di nuovo, una latenza trascurabile.
- E' memorizzabile nella cache, quindi se siete preoccupati per la latenza risparmiate larghezza di banda mettendo in cache le risposte del server.
- Ha un'interfaccia uniforme basata sull'hypermedia (sapete, quella cosa di HATEOAS). Il bello è che si può migliorare notevolmente il disaccoppiamento tra client e server. Se le risposte del server contengono ipermedia per tutte le risorse referenziate e le azioni disponibili nel contesto dell'ultima richiesta, il client non ha bisogno di sapere molto del server se non un punto di ingresso e alcune convenzioni sull'ipermedia. Correttamente implementato, si potrebbero cambiare molte cose nel lato server senza riscrivere una sola riga nel client.
- E infine, è a strati, come una cipolla. Potete mettere diversi strati di componenti tra il client e il server, per scopi di routing, bilanciamento del carico, cacheing o qualsiasi cosa abbiate bisogno. Naturalmente aggiunge latenza, ma anche molta flessibilità. E se si cambia un livello, solo il livello precedente potrebbe essere influenzato, quindi la propagazione degli effetti del cambiamento è limitata.
In generale gli unici contro sono legati alla latenza nei tempi di elaborazione delle richieste e all'utilizzo della larghezza di banda. Ma è una grande architettura generale che fornisce:
- grande flessibilità
- bassi costi di manutenzione
- alta scalabilità
- semplicità
Articoli simili
- Qual è qualche chatbot online con API RESTful completamente gratuito (qualcosa come https://www.cleverbot.com/api)?
- Qual è un buon esempio di vita reale di un'API veramente RESTful?
- Se qualcuno è allergico alle api, deve stare lontano da miele, cera d'api e polline d'api?
- Quali sono i vantaggi e gli svantaggi dell'uso dei punti rispetto ai pixel per il design delle app mobili?