AFAIK Fielding didn't claim REST was any good, he was just describing the de-facto architecture of the web.
Questo lo sottovaluta un po ', penserei. REST è, dopo tutto, un'enumerazione dello stile architettonico che Fielding stava usando come capo architetto del specifica HTTP / 1.1 .
But is there actually any reason to think REST is a desirable architecture for this domain? Is there any evidence that say HATEOAS is a beneficial design principle for machine-to-machine communication?
"Dipende". HATEOAS fa parte del interfaccia uniforme vincolo di REST.
By applying the software engineering principle of generality to the component interface, the overall system architecture is simplified and the visibility of interactions is improved. Implementations are decoupled from the services they provide, which encourages independent evolvability. The trade-off, though, is that a uniform interface degrades efficiency, since information is transferred in a standardized form rather than one which is specific to an application's needs. The REST interface is designed to be efficient for large-grain hypermedia data transfer, optimizing for the common case of the Web, but resulting in an interface that is not optimal for other forms of architectural interaction.
Quindi pensiamo per un momento a cosa significa questo. Quando ho problemi con il mio router wireless, posso comunicare con lo stesso browser che uso per inviare risposte a stackexchange. In particolare, non importa quale browser sto usando, o se il mio browser è qualche aggiornamento dietro (o avanti) di ciò che il router si aspetta. 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 solo .
Non è, ovviamente, universale. Fielding, nel 2008 , ha scritto:
That doesn’t mean that I think everyone should design their own systems according to the REST architectural style. REST is intended for long-lived network-based applications that span multiple organizations.
If you don’t see a need for the constraints, then don’t use them.
I vincoli che formano lo stile architettonico REST sono stati scelti per le proprietà che essi inducono; se queste proprietà non sono preziose per il tuo caso d'uso, dovresti assolutamente considerare di eliminare i vincoli corrispondenti.
Quando la macchina da macchina diventa difficile, è che hai perso la capacità dell'essere umano di confondere la semantica fornita dalle rappresentazioni. I clienti possono cavarsela sapendo solo i tipi di media, ma normalmente abbiamo un essere umano che osserva i segnali semantici per ricavare significato.
schema.org è una parte di uno sforzo per creare un vocabolario leggibile da una macchina; gli agenti macchina usano il client per trovare i suggerimenti semantici e applica la propria comprensione del significato per scegliere le azioni corrette da intraprendere.
Ma è lavoro; devi investire nello sviluppo di rappresentazioni compatibili con le macchine delle tue risorse e assicurarti che tali rappresentazioni rimangano compatibili in avanti e all'indietro, in modo che i clienti possano essere sviluppati indipendentemente.
Quando una singola organizzazione controlla sia il client che il server, i vantaggi di questa indipendenza sono molto minori, nel qual caso il vincolo potrebbe non essere una scelta architettonica appropriata.