Che cos'è un URL RESTful per un oggetto collegato?

4

Questo sarà un servizio web che restituisce un oggetto JSON. Attualmente sto usando la tecnologia C # e sto semplicemente usando ASP.Net MVC per creare le chiamate. Questa non è una pagina web, quindi la SEO non è una preoccupazione.

Mi sono imbattuto in un certo numero di istanze in cui voglio ottenere l'elemento "successivo" o "precedente" in un elenco. Ad esempio, ho un servizio che restituisce una foto in primo piano. link che restituisce un JSON

{"name": "At_The_Concert", "id": "123", "src": "http://myservice.com/photostore/123.jpg"}

Il client (Ajax, dispositivo mobile, ecc.) di questo servizio vuole sapere quale sarà l'elemento "prossimo". Sto lottando per quello che dovrebbe essere l'URL.

o forse la proprietà id dovrebbe essere solo un parametro

link

O forse questo è completamente sbagliato e dovrebbe essere come

link

sebbene con il routing di .Net, potrebbe essere più facile scriverlo come link

Sono relativamente nuovo ai servizi web e REST. Ottengo il CRUD di base per REST, ma non so quale sia la procedura migliore per creare più URL personalizzati, in questo caso la "prossima" foto. Esiste una pratica RESTful accettata?

    
posta John 28.12.2011 - 19:33
fonte

3 risposte

13

In questo modo:

{"name": "At_The_Concert", "id": "123", "src": "http://myservice.com/photostore/123.jpg",
"next": "http://myservice.com/photos/345/",
"prev": "http://myservice.com/photos/901/"}
    
risposta data 28.12.2011 - 19:38
fonte
0

Avere la funzione successiva è un'operazione sul lato server richiede informazioni di stato, in particolare se si sta coinvolgendo il filtraggio. Questo viola REST.

Sembra più appropriato fornire un elenco di directory al link e lasciare che l'app chiami link link quando si colpisce next / previous. Con questo metodo, la logica di filtraggio sarebbe sul client e potrebbe essere modificata / ripristinata senza dover chiamare di nuovo il servizio.

In alternativa, potresti avere i parametri di richiesta nel link che restituisce un elenco filtrato. Naturalmente, questo richiederebbe chiamate di servizio aggiuntive se il filtro fosse cambiato, quindi potresti voler seguire il precedente suggerimento.

Il risultato finale sarebbe lo stesso, comunque. Il tuo stato risiederebbe dove dovrebbe - nell'app client invece che nel server.

    
risposta data 28.12.2011 - 20:14
fonte
0

Un'altra opzione è vedere OData and Service Operations garantirà lo stile RESTful delle tue chiamate.

    
risposta data 28.12.2011 - 23:48
fonte

Leggi altre domande sui tag