Вот как я их понимаю и использую в разных случаях использования:
Пример: Управление рестораном
пример использования REST : управление заказами
- create order (POST), update order (PATCH), cancel order (DELETE), retrieve order (GET)
- endpoint: /order?orderId=123
Для управления ресурсами REST чист. Одна конечная точка с предопределенными действиями. Можно увидеть способ предоставить миру экземпляры БД (Sql или NoSql) или классов.
Пример реализации:
class order:
on_get(self, req, resp): doThis.
on_patch(self, req, resp): doThat.
Пример фреймворка: Falcon для Python.
вариант использования RPC : управление операциями
- prepare ingredients: /operation/clean/kitchen
- cook the order: /operation/cook/123
- serve the order /operation/serve/123
Для аналитических, оперативных, неотзывчивых, непредставительных, основанных на действиях заданий RPC работает лучше, и вполне естественно думать, что это функционально.
Пример реализации:
@route('/operation/cook/<orderId>')
def cook(orderId): doThis.
@route('/operation/serve/<orderId>')
def serve(orderId): doThat.
Пример фреймворка: Flask для Python