Ecco come li capisco e li uso in diversi casi d'uso:
Esempio: gestione del ristorante
caso d'uso per REST : gestione degli ordini
- create order (POST), update order (PATCH), cancel order (DELETE), retrieve order (GET)
- endpoint: /order?orderId=123
Per la gestione delle risorse, REST è pulito. Un endpoint con azioni predefinite. Può essere visto come un modo per esporre un DB (Sql o NoSql) o istanze di classe al mondo.
Esempio di implementazione:
class order:
on_get(self, req, resp): doThis.
on_patch(self, req, resp): doThat.
Esempio di framework: Falcon per python.
caso d'uso per RPC : gestione delle operazioni
- prepare ingredients: /operation/clean/kitchen
- cook the order: /operation/cook/123
- serve the order /operation/serve/123
Per lavori analitici, operativi, non reattivi, non rappresentativi e basati sull'azione, RPC funziona meglio ed è molto naturale pensare funzionale.
Esempio di implementazione:
@route('/operation/cook/<orderId>')
def cook(orderId): doThis.
@route('/operation/serve/<orderId>')
def serve(orderId): doThat.
Esempio di framework: Flask per python