For now I do have a specific URL which I call "api/v1/start" in order to start emails queue sending. But I'm afraid that it is not in comply with the REST standard.
REST non si cura di quale ortografia si usa per gli identificatori di risorse. /api/v1/start
va bene.
(Tecnicamente, Roy Fielding ha avuto cose molto scortese da dire sulla parte v1
. Si tratta di un problema diverso da quello che stai attualmente chiedendo, comunque)
How can I add this feature on my RESTfull service. And... Is REST a good option for this demand or should I ignore it?
Ci sono due modelli comuni.
Uno è di inviare un messaggio a qualche endpoint, che capisce come interpretare il messaggio e fare la cosa giusta. Questo è analogo a ciò che facciamo quando inviamo un modulo Web in un browser. Il consumatore ha bisogno di sapere quali link seguire e di identificare i campi che deve essere cambiato, quindi il messaggio va ovunque.
L'altro modello è un approccio più dichiarativo, in cui PUT rappresenta una rappresentazione del modo in cui si desidera che la risorsa sia, e il server di origine interpreta la nuova rappresentazione e scopre come farlo.
Esempio: immagina di provare a scrivere un'API REST per un forno da cucina. Il forno è spento e il nostro obiettivo è accenderlo con un'impostazione target di 450F.
Nel primo approccio, vorremmo GET
la rappresentazione corrente del forno, e avremmo una forma in entrata, con spunti semantici che spiegano i diversi campi. Inseriremmo 450F nel modulo e lo inoltreremo. Questo sarebbe convertito in una richiesta POST e inviato al server per l'elaborazione.
Nel secondo approccio, vorremmo GET
la rappresentazione corrente del forno, con segnali semantici che ci dicono la temperatura corrente. Usando il nostro editor preferito, modificheremmo la nostra copia locale della rappresentazione con la temperatura desiderata di 450F, e quindi PUT
la nuova rappresentazione sul server, che quindi capirebbe come raggiungere il nostro stato target desiderato.
What does Roy Fielding Says?
Vedi, per esempio, questo tweet del 2013
a "v1" is a middle finger to your API customers, indicating RPC/HTTP (not REST)