it-swarm.dev

Esempi reali di HATEOAS (architettura REST)

come tutti avranno notato, ci sono molte API REST false/rudimentali in natura (che implementano un'API HTTP e la chiamano REST senza seguire l'ipertesto-come-il-motore- del requisito dello stato dell'applicazione, che ha portato a famoso rant di Roy T. Fielding , l'uomo che per primo ha specificato il paradigma REST).

Non sono stato in grado di trovare esempi pratici di un'implementazione REST guidata dall'ipertesto, insieme alle definizioni associate al tipo di supporto specifiche dell'applicazione per le transizioni di stato.

Esistono esempi accessibili al pubblico di tali implementazioni?

136
pmf

Non è un'implementazione nel senso di eseguire il codice, ma mi piace molto l'articolo " Come ottenere una tazza di caffè " su InfoQ. Descrive il processo di ordinazione di un caffè presso Starbucks come protocollo RESTful. Questo va oltre il tipico "tutto è una risorsa" REST articolo introduttivo e si concentra su HATEOAS. Altamente raccomandato.

101
trendels

Che ne dici di Sun Cloud API ? Dall'introduzione:

L'API non presuppone una struttura particolare nello spazio URI. Il punto di partenza è un URI, fornito dal fornitore di servizi cloud, che identifica il cloud stesso. La rappresentazione del cloud contiene URI per le altre risorse nel cloud e anche per le operazioni che possono essere eseguite su di essi (ad esempio distribuzione e avvio di macchine virtuali).

Anche backstory potrebbe essere utile.

21
Rich Apodaca

Netflix ha un'API REST basata su HATEOAS che include collegamenti come parte delle risorse.

7
Will Sargent

Mi sono reso conto che questo mi è stato chiesto qualche tempo fa, ma ho preso una pugnalata nel dimostrare un flusso "API" REST API per un semplice esempio. Ho provato a seguire le regole di Roy per REST - forse potrebbe aiutare: Esempio di API usando REST

3
jeremyh

L'API RESTfulness di Sun Cloud non è effettivamente affrontata nel quarto punto di Roy:

A REST non deve definire nomi o gerarchie di risorse fisse (un ovvio accoppiamento di client e server). I server devono avere la libertà di controllare il proprio spazio dei nomi. Invece, consentire ai server di istruire i clienti su come costruire URI appropriati, come avviene nei moduli HTML e nei modelli URI, definendo tali istruzioni all'interno dei tipi di media e delle relazioni di collegamento. [Il fallimento qui implica che i clienti stanno assumendo una struttura di risorse a causa di informazioni fuori banda, come un dominio -specifico standard, che è l'equivalente orientato ai dati dell'accoppiamento funzionale di RPC].

Esempio 1 Nomi delle risorse fissi in un'erede definita:

Dall'API di Sun Cloud: "... la rappresentazione di un VDC includerà rappresentazioni dei cluster che lo popolano, che a loro volta includono rappresentazioni delle macchine virtuali all'interno di ciascun cluster."

Esempio 2 informazioni fuori banda, come uno standard specifico del dominio:

Devi avere i contenuti della pagina wiki (informazioni fuori banda) per sapere che il "meccanismo di comunicazione delle risorse" per il campo di risorse Cloud "uri" è GET.

3
Hedgehog