REST описывает мир как набор ресурсов с адресами: клиент выбирает HTTP-метод, сервер возвращает представление. RPC — как набор операций: клиент вызывает процедуру с аргументами. GraphQL — как граф типизированных данных: клиент сам перечисляет нужные поля, и сервер собирает ответ в этой форме.
Практический выбор сводится к характеру доминирующих операций. CRUD над сущностями — родная стихия REST, действия-команды — RPC и gRPC со стримингом, сложные выборки для разнородных клиентов — GraphQL, который убирает overfetching и лишние эндпоинты под каждый экран.
💡 Зрелые системы редко живут на одном стиле: типичная схема — REST на периметре, gRPC внутри и GraphQL в BFF для мобильных клиентов. Вопрос не «какой стиль лучше», а где какая граница и кто её потребитель.
🔗 Подробнее: https://agaltsovav.ru/docs/architecture/api-styles/