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
POSTuna 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.