AFAIK Fielding non ha affermato che REST fosse utile, stava solo descrivendo l'architettura di fatto del web.
Ciò lo sottolinea un po ', penso. Dopotutto, REST è un elenco dello stile architettonico che Fielding stava usando come capo architetto delle specifiche HTTP / 1.1 .
Ma c'è davvero qualche ragione per pensare che REST sia un'architettura desiderabile per questo dominio? Esistono prove che affermano che HATEOAS è un principio di progettazione vantaggioso per la comunicazione da macchina a macchina?
"Dipende". HATEOAS fa parte del vincolo di interfaccia uniforme di REST.
Applicando il principio di ingegneria del software di generalità all'interfaccia del componente, l'architettura generale del sistema è semplificata e la visibilità delle interazioni è migliorata. Le implementazioni sono disaccoppiate dai servizi che forniscono, il che incoraggia un'evoluzione indipendente. Il compromesso, tuttavia, è che un'interfaccia uniforme degrada l'efficienza, poiché le informazioni vengono trasferite in una forma standardizzata piuttosto che in una specifica delle esigenze di un'applicazione. L'interfaccia REST è progettata per essere efficiente per il trasferimento di dati ipermediali di grandi dimensioni, ottimizzando per il caso comune del Web, ma dando come risultato un'interfaccia non ottimale per altre forme di interazione architettonica.
Quindi pensiamo per un momento a cosa significa. Quando ho problemi con il mio router wireless, posso comunicare con esso usando lo stesso browser che utilizzo per inviare risposte a stackexchange. In particolare, non importa quale browser sto utilizzando o se il mio browser presenta alcuni aggiornamenti (o successivi) rispetto alle aspettative del router. Non importa che l'organizzazione di ingegneria che ha scritto il browser sia completamente indipendente dall'organizzazione che ha creato l'interfaccia del router.
Funziona e basta .
Non è, ovviamente, universale. Fielding, nel 2008 , ha scritto:
Ciò non significa che penso che tutti dovrebbero progettare i propri sistemi secondo lo stile architettonico REST. REST è destinato ad applicazioni di rete di lunga durata che si estendono su più organizzazioni. Se non vedi la necessità dei vincoli, non utilizzarli.
I vincoli che formano lo stile architettonico REST sono stati scelti per le proprietà che inducono; se quelle proprietà non sono utili per il tuo caso d'uso, allora dovresti assolutamente considerare di eliminare i vincoli corrispondenti.
Dove la macchina alla macchina diventa difficile, è che hai perso la capacità dell'essere umano di sfocare la semantica fornita dalle rappresentazioni. I clienti possono cavarsela conoscendo solo i tipi di media, ma normalmente abbiamo un essere umano che guarda gli spunti semantici per ricavarne un significato.
schema.org è una parte dello sforzo di creare un vocabolario leggibile automaticamente; gli agenti macchina usano il client per trovare i suggerimenti semantici e applicano la propria comprensione del significato per scegliere le azioni corrette da intraprendere.
Ma è lavoro; è necessario investire nello sviluppo di rappresentazioni a misura di macchina delle proprie risorse e garantire che tali rappresentazioni rimangano compatibili in avanti e all'indietro, in modo che i clienti possano essere sviluppati in modo indipendente.
Quando una singola organizzazione controlla sia il client che il server, i vantaggi di questa indipendenza sono molto più piccoli, nel qual caso il vincolo potrebbe non essere una scelta architettonica appropriata.