Qual è il vantaggio di hypermedia (HATEOAS)?

16

Non capisco il vantaggio di HATEOAS per le API destinate all'uso da parte dei programmi (al contrario degli utenti che navigano direttamente nella tua API). Certo, il cliente non è legato a uno schema URL ma è legato a uno schema di dati che è la stessa cosa nella mia mente.

Ad esempio, supponiamo che voglio vedere un articolo su un ordine, supponiamo di aver già scoperto o conosciuto già l'URL dell'ordine.

hateoas:

order = get(orderURL);
item = get(order.itemURL[5]);

non hateoas:

order = get(orderURL);
item = get(getItemURL(order,5));

Nel primo modello devo sapere che l'oggetto ordine ha un campo itemURL. Nel secondo modello devo sapere come costruire un URL oggetto. In entrambi i casi devo "sapere" qualcosa in anticipo, quindi cosa sta facendo HATEOAS per me?

    
posta Pace 18.05.2012 - 02:46
fonte

2 risposte

5

Una differenza è che lo schema è sperabilmente uno standard, o almeno può essere riutilizzato da altri.

Ad esempio, supponiamo che tu stia utilizzando l'API di Twitter e vuoi supportare anche StatusNet (o al suo posto). Dal momento che usano lo stesso modello di dati di Twitter, se l'API segue HATEOAS ora devi solo modificare l'URL principale. In caso contrario, ora devi modificare ogni singolo URL dal codice.

Naturalmente, se è necessario modificare il codice per inserire l'URL del punto di ingresso del servizio in ogni caso, potrebbe non essere così utile. Brilla davvero se quell'URL è inserito dinamicamente; ad esempio, se stavi creando un servizio come Twillio, che interagirebbe con l'API dell'utente stesso.

    
risposta data 18.05.2012 - 13:54
fonte
8
  1. API esplorabile: Può sembrare banale ma non sottovalutare la potenza di un'API esplorabile. La possibilità di navigare tra i dati rende molto più semplice per gli sviluppatori client costruire un modello mentale dell'API e delle sue strutture dati.

  2. Documentazione in linea: L'uso di URL come relazioni di collegamento può indirizzare gli sviluppatori client alla documentazione.

  3. Semplice logica client: Un client che segue semplicemente gli URL invece di costruirli da solo, dovrebbe essere più facile da implementare e mantenere.

  4. Il server diventa proprietario delle strutture URL: L'uso di hypermedia rimuove la conoscenza codificata del client delle strutture URL utilizzate dal server.

  5. Off caricamento del contenuto in altri servizi: L'ipermedia è necessaria quando si scarica il contenuto su altri server (ad esempio una CDN).

  6. Controllo delle versioni con collegamenti: Hypermedia aiuta il controllo delle versioni delle API.

  7. Implementazioni multiple dello stesso servizio: L'ipermedia è una necessità quando esistono più implementazioni dello stesso servizio (e un client deve accedere a più di una di esse).

Puoi trovare una spiegazione approfondita di questi punti elenco qui: link

    
risposta data 09.12.2013 - 22:27
fonte

Leggi altre domande sui tag