I vantaggi di HATEOAS (Hypermedia) sono reali sia per le API interne che esterne. Tuttavia, spesso mancano gli strumenti per trarre vantaggio da questi vantaggi.
Iniziamo con il "problema" di fare richieste multiple al server. Ci sono diverse soluzioni Prima di tutto, se il front-end deve costantemente fare più richieste per ottenere ciò di cui ha bisogno, si può avere un problema di modellazione dei dati. La tua API non dovrebbe semplicemente mappare 1: 1 al tuo database. Concentrati sulla modellazione dei flussi di dati attraverso il sistema, piuttosto che sulla modellazione dei dati.
Tuttavia, anche se devi effettuare più chiamate, esistono diverse soluzioni a tua disposizione. Il tuo strumento più importante è la cache HTTP. In teoria, dovresti essere in grado di recuperare una risorsa una volta e quindi mantenere quella copia locale della risorsa sincronizzata con il server. Se apporti una modifica alla tua copia locale, informa il server della modifica con una richiesta PUT e continua a utilizzare la tua copia locale. Checkout questo blog per una buona spiegazione di questo approccio, o ottenere una copia del libro, "REST in pratica" (ancora il miglior libro su REST che ho letto tutti).
Se le risorse cambiano molto frequentemente sul server o vengono modificate frequentemente da altri utenti API, questo approccio potrebbe non essere molto utile. Fortunatamente, ci sono altre opzioni. Alcuni formati ipermediali come Siren e HAL consente alle risposte di restituire non solo la risorsa richiesta, ma anche altre risorse che prevede che si desideri anche richiedere richieste di follow-up. Ti incoraggio a controllare quei tipi di media.
Tuttavia, la funzionalità push del server HTTP / 2.0 rende obsoleta questa funzionalità. Questo fondamentalmente risolve lo stesso problema, ma a livello di protocollo. Non conosco bene questa funzione, quindi non cercherò di spiegarlo ulteriormente. Il problema con questo, ovviamente, è il supporto lato server scarso per questa funzione. Speriamo che i nostri framework web si aggiorneranno presto.
Ora parliamo del problema più grande, la mancanza di strumenti di front-end. La sfida principale sul lato client è che il front-end deve capire come utilizzare le risposte abilitate da Hypermedia dal server. Questo può essere molto lavoro e non è qualcosa che gli ingegneri front-end vogliono avere con se stessi, e non dovrebbero farlo. Ciò è particolarmente vero quando iniziamo a parlare di alcuni dei formati Hypermedia più complicati e più potenti come JSON Hyper Schema . Con gli strumenti giusti, gli ingegneri front-end non dovrebbero nemmeno sapere quali collegamenti vengono seguiti per ottenere i dati richiesti.
So che non ci sono state piccole ondate di mano in questa risposta, ma è un argomento piuttosto ampio e complicato. Ti incoraggio a seguire alcuni di questi link per saperne di più. Sono fiducioso che un giorno gli strumenti saranno abbastanza buoni da non dover più pensare a questa roba. Dopo tutto, quanto è necessario sapere su HTTP, HTML, un URI per poter utilizzare un sito come questo. Fondamentalmente zero, e dovrebbe essere lo stesso per chiunque usi la tua API.
Un'ultima cosa che ti lascerò è che REST non è necessariamente la scelta giusta per tutti i casi d'uso ed è giusto non usare hypermedia se non si adatta alle tue esigenze. Oggigiorno, la maggior parte delle persone prende questa decisione con una buona dose di ignoranza, ma è una domanda valida da porre e hai ragione a chiederlo. Assicurati di conoscere i compromessi e la buona fortuna per identificare le buone fonti di informazione dal cattivo.