É assim que eu os entendo e os uso em diferentes casos de uso:
Exemplo: gerenciamento de restaurante
caso de uso para REST : gerenciamento de pedidos
- create order (POST), update order (PATCH), cancel order (DELETE), retrieve order (GET)
- endpoint: /order?orderId=123
Para gerenciamento de recursos, REST é limpo. Um ponto final com ações predefinidas. Pode ser visto uma forma de expor um banco de dados (Sql ou NoSql) ou instâncias de classe para o mundo.
Exemplo de implementação:
class order:
on_get(self, req, resp): doThis.
on_patch(self, req, resp): doThat.
Exemplo de framework: Falcon para python.
caso de uso para RPC : gerenciamento de operação
- prepare ingredients: /operation/clean/kitchen
- cook the order: /operation/cook/123
- serve the order /operation/serve/123
Para trabalhos analíticos, operacionais, não responsivos, não representativos e baseados em ações, o RPC funciona melhor e é muito natural pensar funcional.
Exemplo de implementação:
@route('/operation/cook/<orderId>')
def cook(orderId): doThis.
@route('/operation/serve/<orderId>')
def serve(orderId): doThat.
Exemplo de estrutura: Flask para python