Sto esponendo una API REST, ed è incredibilmente facile e veloce da utilizzare finché si esegue CRUD (Crea, Aggiorna, Elimina). Ma ho questo Ticket che restituisce una lista di biglietti (get), un Ticket/{id} che ottiene un oggetto particolare (get) e un metodo di attivazione (put) che cambia lo stato del ticket da non attivato ad attivato.Qual è la cosa migliore da fare quando hai bisogno di un verbo usando REST API?
Ora ho bisogno di dare al "consumatore" REST la possibilità di fare qualcosa di simile (in ws si chiamerà: GetAndActivateRandomTicket() e mi chiedo, cosa dovrebbe essere descritto come su REST? post? a put? a get ?. L'obiettivo è ottenere una quantità casuale di ticket e impostare lo stato su attivo. Qualcosa come un get & messo allo stesso tempo ma senza conoscere prima mano il {id} per il put.
Dovrebbe essere/biglietti? attivare = true & quantità = 5? Cosa verbo? Devo esporre un verbo al posto di un sostantivo? qual è il 'migliori pratiche' su questo tema?
Grazie.
L'attivazione può avvenire in entrambi i modi, in un modo richiedendo i ticket e quindi attivando 1 o più. Questo è chiaro L'altro modo è che il consumatore vuole attivare qualsiasi biglietto disponibile (il casuale non è in realtà casuale ma un "SELECT ticket FROM Db LIMIT 1") è solo un biglietto. Quindi penso che la risposta sarebbe:/Ticket? AmountToActivate = 5 & activate = true (la mia preferenza personale) ma con quale verbo? OTTENERE? METTERE? INVIARE? Se l'attivazione è implicita nell'URL, penso che sia un GET, ma ciò va contro REST perché in realtà modifica qualcosa e non è lo spirito di GET .... 'ancora confuso' –
Aaah! Io vedo. La confusione è con la modifica della risorsa con la chiamata "GET" - punto valido. L'ho trascurato. Ecco cosa puoi fare per rimanere fedele allo spirito di Rest :) GET:/Tickets/fetchAmountOfTickets = 100 & activated = false (o ... 100; notActivated) e quindi inviare una richiesta PUT con l'aggiornamento di attivazione. Non vedo il problema con questo. Stai filtrando GET w.r.t.alcuni parametri (algoritmici) e quindi la modifica di tali risorse utilizzando il client PUT – PhD
potrebbe voler evitare get/put e fare entrambi con una singola richiesta semplicemente inviarmi i dati del ticket e impostare su attivato ... :) (senza sapere prima mano quale sarebbe stato attivato e restituito). –