Qual è il modo migliore per implementare viste differenti di una risorsa in modo RESTful?

3

Immagina, c'è una risorsa, per esempio un evento. L'utente è in grado di ottenere un elenco di eventi in formato HTML. Dovrebbe essere in grado di visualizzare quell'elenco in due modi: come elenco e come calendario. In che modo l'API dovrebbe rispondere a queste opzioni?

L'approccio più semplice, penso, è passare alcuni parametri per indicizzare l'azione per determinare quale tipo di presentazione utilizzare, ma non mi piace. Non so perché, non è RESTful per me.

Che cosa pensi, ho frainteso qualcosa e dovrei mantenere le cose semplici o c'è un approccio migliore?

    
posta Dmitry Maksimov 22.03.2011 - 18:14
fonte

3 risposte

1

Se il contenuto è identico, non è chiaro quali "differenze" verrebbero visualizzate nell'elenco o nel calendario. Se il risultato è un documento JSON o XML, non dovrebbe esserci differenza distinguibile.

se il risultato è una pagina HTML, in cui la formattazione è parte dei risultati, allora il percorso è la cosa giusta da fare, poiché il contenuto è diverso.

Hai diverse scelte.

  1. Il percorso cambia. "/ percorso / per / risorsa / vista / id /" funziona bene per noi. Le nostre opinioni includono "html", "xml" e "json".

    Tuttavia, il tuo "elenco" e "calendario" possono o meno lo stesso contenuto, in un unico formato e un'organizzazione diversa. Quindi hai un numero di problemi intrecciati insieme nella tua domanda.

  2. La stringa di query cambia. Questo: "? View = calender" o "? View = list".

  3. Modifiche ai frammenti. Questo: "#calendar" o "#list". Questi possono funzionare bene nel tuo caso, dal momento che i due punti di vista sembrano avere contenuti diversi.

risposta data 22.03.2011 - 18:20
fonte
1

L'opzione tecnicamente corretta sarebbe di avere l'applicazione nell'intestazione http accept. Questo è in genere così ovvio che nessuno, se non RESTheads hardcore, lo usa e usa switch url che sono un ragionevole compromesso.

    
risposta data 22.03.2011 - 19:53
fonte
0

Nel modo in cui lo stai descrivendo, sembrerebbe che la lista e il calendario siano risorse differenti e dovrebbero avere URL diversi.

Anche se attualmente sono popolati usando gli stessi dati, penso che mi piacerebbe vederli come risorse separate, almeno in parte perché qualsiasi opzione per vederle come rappresentazioni separate (stringa di query o frammenti) sembra un po ' RESTful.

Inoltre, se i dati dietro l'elenco e il calendario divergono in futuro, la visualizzazione come rappresentazioni separate della stessa risorsa andrà a pezzi.

    
risposta data 22.03.2011 - 19:26
fonte

Leggi altre domande sui tag