Nella mia continua ricerca per cercare di avvolgere la mia mente attorno a RESTful-ness, sono venuto in un altro posto dove non sono sicuro di come procedere. Ho creato un programma di sperimentazione per me stesso in cui avrei progettato un semplice sistema di voto per una risorsa, proprio come il modo in cui SO consente di votare sulle domande. Quindi, dire che la mia risorsa è un'immagine, e posso ottenere un'immagine da un ID, in questo modo:Come progetteresti un sistema di votazione RESTful?
http://www.mysite.com/images/123123
e in questo esempio, che i rendimenti dire, una rappresentazione JSON di un'immagine, in questo modo:
{
"URL":"http://www.mysite.com/images/123123.jpg",
"Rep":"100"
}
Come progettare un modo per "votare" su quell'immagine? Mi piacerebbe due operazioni; up-voto e down-vote. Il cliente non dovrebbe sapere quanto peso abbia ciascuno, perché mi piacerebbe che il premio per un voto in alto/basso fosse deciso a livello di server, così posso cambiarlo ogni volta che mi piace.
La mia prima idea era di avere qualcosa di simile:
http://www.mysite.com/vote/images?image=123123
A questo URL, si potrebbe postare qualcosa di simile al seguente:
{
"Vote":"UpVote"
}
Ma sono diffidare di che - a me che dice RPC travestito. Sarebbe un modo scadente per progettare questo? Se sì, quali altri motivi posso provare?
Hmm - Penso di aver capito, ma UpVoteLink non è un'azione, non una risorsa? Non potresti semplicemente avere un "VoteLink" e POST a quello, e in quella richiesta, specificare se è un upvote o un downvote? –
Se pensi a un voto come a una risorsa allora "UpVotes" potrebbe essere la raccolta di voti di tipo up e la risorsa "DownVotes" è la raccolta di voti di tipo down. Forse avrei dovuto denominare i collegamenti UpVotesLink e DownVotesLink ma il nome del collegamento non influisce molto. –
Ahh - interessante! Molto bello –