Dispongo di un'API RESTful che consente ai miei utenti di ricevere richieste di informazioni sulla propria attività, ad es. 'Vorrei prenotare il servizio x alla data y. È disponibile? '. L'API salva queste informazioni come una risorsa per il seguente URI
users/{userId}/enquiries/{enquiryId}
Le informazioni mostrate quando questa risorsa viene recuperata sono le cose standard che ci si aspetterebbe da una richiesta - email, first_name, last_name, indirizzo, messaggio
L'API consente anche ai clienti di essere creati per un utente. Il cliente ha un login e una password e anche un profilo. I seguenti URI espongono queste due risorse
PUT users/{userId}/customers/{customerId}
PUT users/{userId}/customers/{customerId}/profile
Il problema che sto avendo è che mi piacerebbe avere la possibilità di consentire agli utenti di creare un cliente da una richiesta. Ad esempio, l'utente è in grado di offrire il proprio servizio alla data richiesta e quindi desidera configurare un cliente con i dettagli di accesso, ecc. Per consentire loro di gestire il resto del processo.
La risposta ovvia sarebbe utilizzare un URI come
users/{userId}/enquiries/{enquiryId}/convert-to-client
Il problema con questo è che in qualche modo va contro molto di quello che ho letto su come implementare REST (in particolare dal libro Restful Web Services che suggerisce che gli URI dovrebbero puntare a risorse e non operazioni su risorse).
L'altra opzione sarebbe quella di ottenere l'applicazione client (cioè il codice che chiama l'API) per gestire parte di questa logica dell'applicazione. Questo non mi sembra giusto. Ho implementato nel mio progetto che l'app client è abbastanza stupida. Sa solo quanto basta per visualizzare i risultati dall'API e non contiene alcuna logica applicativa.
Sarebbe bello sapere quali sono le visualizzazioni degli altri sul modo migliore di configurarle
Ho sbagliato a non avere alcuna logica di applicazione nell'app client? Come eseguirò questa operazione esclusivamente nell'API REST?