Voglio che un server sia un produttore di compiti che il cliente deve elaborare ed essere rinviato. Qual è l' method
dell'HP corretto nell'approccio RESTful per creare e restituire una nuova risorsa?
Sembra sciocco, ma il modo naturale sembra essere GET /task/
, o più verosimilmente GET /new_task/
. Un'attività viene creata e restituita. Ma questo non sembra giusto. Anche POST
non sembra naturale. Il cliente non vuole POST
di dati. Lo richiede piuttosto.
Use Case:
Ad esempio. Voglio produrre alcuni compiti da svolgere, diciamo alcuni esercizi. Devono essere elaborati e rispediti. La mia idea è di fornire uri con il metodo GET
, per ottenere un'attività. Salva sul server che è stata ottenuta un'attività e salva il timeout per questo. Tecnicamente un'attività può essere recuperata molte volte e GET
non la modifica in alcun modo, quindi sembra addirittura idempotente. Se un utente POST
s risponde, il server risponderà in modo diverso in base al timestamp salvato. Tuttavia, mi sembra che allo stesso tempo creo anche una nuova risorsa, ovvero (user; task; time-stamp)
che semanticamente è "dato-compiti". Qual è la vista in questo caso?
Le mie idee:
-
GET /resource/
e crea / genera e rimanda indietro. Diciamo:{ "self": "http://super-service/resource/<new_id>", "data" : "Ipsum Lorem... Your random stuff." }
È davvero idempotente? Il "sé" non è in realtà un mirror di GET
questo sembra controintuitivo per una richiesta GET
.
- Un altro modo che posso immaginare è qualcosa come
POST
una richiesta per la risorsa da creare. E.g:POST /create_task/
che non penso sia una soluzione adeguata perché ha un verbo in URI. Ma si può risolvere il problema diciamo via:POST /task_request/
, quindi ora sto postando una richiesta per un compito, ma mi sembra di manipolare la semantica per renderla carina. Ancora non sono sicuro se corretto. I dati nella risposta potrebbero essere completamente non correlati aPOST
. Va bene? I nuovi dati possono essere una risposta (ad esempio dal caso 1).
Vorrei chiedere la motivazione dietro l'approccio proposto. Quindi posso capire e imparare il processo di pensiero.