Sto scrivendo un servizio RESTful per un sistema di gestione dei clienti e sto cercando di trovare le migliori pratiche per l'aggiornamento parziale dei record. Ad esempio, desidero che il chiamante sia in grado di leggere l'intero record con una richiesta GET. Ma per aggiornarlo sono consentite solo alcune operazioni sul record, come cambiare lo stato da ABILITATO a DISATTIVATO. (Ho scenari più complessi di così)
Non voglio che il chiamante invii l'intero record con solo il campo aggiornato per motivi di sicurezza (sembra anche eccessivo).
Esiste un modo consigliato per costruire gli URI? Quando si leggono i libri REST, le chiamate in stile RPC sembrano essere disapprovate.
Se la chiamata seguente restituisce il record cliente completo per il cliente con ID 123
GET /customer/123
<customer>
{lots of attributes}
<status>ENABLED</status>
{even more attributes}
</customer>
come devo aggiornare lo stato?
POST /customer/123/status
<status>DISABLED</status>
POST /customer/123/changeStatus
DISABLED
...
Aggiornamento : per aumentare la domanda. In che modo si incorporano le "chiamate della logica aziendale" in un'API REST? Esiste un modo concordato per farlo? Non tutti i metodi sono CRUD per natura. Alcuni sono più complessi, come ' sendEmailToCustomer (123) ', ' mergeCustomers (123, 456) ', ' countCustomers () '
POST /customer/123?cmd=sendEmail
POST /cmd/sendEmail?customerId=123
GET /customer/count
POST
stesso Roy Fielding: roy.gbiv.com/untangled/2009/it-is-okay-to-use-post dove si trova l'idea di base: se non c'è è un metodo (comeGET
oPUT
) ideale per il tuo uso operativoPOST
.