2011-11-13 13 views
9

Sto cercando di chiarire un concetto correlato alla rilevabilità REST - che è se o meno soddisfare il vincolo HATEOAS per un servizio RESTful significa che ora gli URI possono cambiare, perché sono rilevabili e non documentati.rende Discoverability REST e HATEOAS implica che è possibile modificare gli URI?

Questo sembra non seguire il concetto di Cool URIs - il fatto che gli URI non cambiano, mai. È anche alquanto in disaccordo con il modello del web stesso (che REST dovrebbe essenzialmente adattarsi perfettamente) - il fatto che gli URL siano bookmarkable e non cambino mai, e il fatto che una volta che ne impari uno, puoi andare direttamente ad esso e lo fai non è necessario passare attraverso la radice e scoprirlo ogni volta.

Qualsiasi feedback su questo è apprezzato.

risposta

6

Per Cool URI, no, non dovresti cambiarli, mai. Sono i punti di ingresso nel tuo sistema. Tuttavia, dovresti avere pochissimi di quelli se vuoi avere la capacità di evolvere il resto della struttura URI del tuo sistema in futuro.

Per tutti gli URI non fredde, hanno può infatti cambiare nel tempo. Recentemente ho scritto uno blog post su questo argomento perché trovo che la capacità di REST di permettermi di evolvere il mio sistema nel tempo sia incredibilmente utile.

Assicurarsi che la documentazione dell'API specifichi il fatto che solo i pochi URI di raffreddamento nel sistema devono essere hard-coded dai client e qualsiasi altro URI deve essere rilevato in fase di esecuzione tramite hypermedia traversal. Pensa a loro come a un indirizzo puntatore C: a nessuno importa il valore esadecimale di una variabile puntatore, ma sono sicuri che vorrebbe che indicasse un posto valido in memoria. Lo stesso vale per gli URI non raffinati: la loro struttura non ha importanza, ma il fatto che siano stati recuperati in fase di runtime tramite conversazioni con il server li rende validi.

+0

Grazie per la rapida risposta. Ho letto l'articolo ma non sono ancora chiaro su alcune cose: in primo luogo, non è per cosa è la versione dell'API? e in secondo luogo, dovrebbe esserci QUALSIASI documentazione? La mia comprensione è che in una pura implementazione RESTful, ci sarebbe praticamente zero documentazione. Sarebbe meglio usare solo URL interessanti e fare una versione diversa dell'API per un cambiamento così radicale? – Eugen

+1

Il versioning di un'API puramente per mantenere la compatibilità della struttura URI porta agli stessi problemi di avere un WSDL per ogni versione del tuo servizio web: non stai evolvendo il tuo servizio, stai aggiungendo nuove versioni (per lo più duplicate) ogni volta che dovrai testare, mantenere, documentare, ecc. Fai così, e saluta un enorme vantaggio di REST: evoluzione dinamica dei tuoi "contratti" e un meraviglioso disaccoppiamento tra client e server. –

+0

E per quanto riguarda la mancanza di documentazione, certo - quando l'intero mondo del software ha sviluppato competenze con REST, avrà perfettamente senso. Ci saranno sempre i neofiti che vogliono usare la tua API, e non dare loro alcunché con cui lavorare non ha senso per me. Certo, un esperto di REST potrebbe probabilmente sedersi e capire tutto, ma non è il mondo in cui viviamo.Documenta i tuoi tipi di media e la semantica di ogni risorsa e fornisci un codice di esempio che mostra come devono essere costruiti i clienti ben strutturati, e starai bene. –

0

Deve esserci documentazione. MediaTypes e Link Relations sono un punto di accoppiamento e sia il client che il server devono capirlo. Ecco perché HTML, ATOM e RSS hanno degli standard.

In termini di funzionamento runtime posso vedere che non ho documentazione. Non ho bisogno di sapere che cosa ha Yahoo sulla sua home page perché posso scoprirlo. Allo stesso modo, un cliente del mio servizio non ha bisogno di sapere di una nuova funzionalità che rilascio. Possono trovare il collegamento esiste e quindi utilizzare la relazione di collegamento per vedere cosa fa.

Così la documentazione è di circa le norme e protocolli che devono essere utilizzati, ma non come l'applicazione funzionerà stesso

Problemi correlati