Qual è il metodo HTTP giusto per l'upvoting?

8

Da un punto di vista RESTful , qual è il metodo HTTP più appropriato per l'azione di upvoting di un post nel forum ( come su StackExchange)?

Direi POST per il voto e DELETE per l'annullamento del voto, ma poiché gli utenti possono lanciare un solo voto per messaggio, il voto può essere considerato un idempotente così PUT può anche essere possibile.

    
posta lortabac 30.11.2012 - 12:28
fonte

3 risposte

6

PUT / posts / 323223 / votes

Un voto può essere visto come una risorsa che proverei. Non farei nessuna azione di nuovo il post (/ posts / 323223) poiché questa è un'altra risorsa. Allora avresti bisogno di avere un metodo aggiuntivo e inizia a diventare complesso.

    
risposta data 30.11.2012 - 12:49
fonte
7

Ti sosterrò PUT del tuo voto o DELETE esso. In realtà non modifichi il post del forum, quindi POST sarebbe inappropriato.

    
risposta data 30.11.2012 - 12:42
fonte
1

Dipende principalmente da ciò che consideri il tuo oggetto target effettivo .

Se il tuo oggetto di destinazione è il voto , allora probabilmente dovresti POST il voto al sistema perché stai effettivamente cambiando lo stato dell'oggetto target (il suo contatore interno dei voti).

Nonostante ciò, è molto più probabile che tu consideri il post sul forum come l'oggetto target della tua operazione e, in questo caso, molto probabilmente un set di operazioni PUT / DELETE sia più coerente con la filosofia di REST perché non stai modificando / modificando il tuo post sul forum. Stai solo mettendo / eliminando un token in un contatore. Quindi, sosterrei il suggerimento di Vain Fellowman.

Il fatto che il voto debba essere una operazione idempotenziale è un altro indizio che dovrebbe guidarti in questa direzione. Pensa a questo come un'operazione di ADD / REMOVE sulla variabile membro "vote" della tua classe / oggetto "forumPost".

Per sapere se il tuo vero oggetto di destinazione è il post del forum o il voto, penso che dovresti guardare il tuo codice. L '"oggetto" (forse una pagina JSP + un controller Java + qualche entità Java che fa riferimento ad una tabella DB) che riceve e gestisce questa richiesta HTTP rappresenta un post sul forum o un voto?

    
risposta data 30.11.2012 - 13:32
fonte

Leggi altre domande sui tag