Есть много статей, посвященных этому вопросу, более подробно, доступных на inte rnet. Я пытаюсь дать краткий обзор здесь.
GraphQL предлагает несколько преимуществ по сравнению с REST.
Основное отличие
В интерфейсе REST все связано с ресурсами. Например, вы можете получить ресурсы «машина» с идентификатором 25 и идентификатором 83, вызвав конечную точку следующим образом:
GET /cars/25
GET /cars/83
Обратите внимание, как вы должны вызывать интерфейс дважды. Конечная точка («автомобили») и ваш ресурс связаны.
В GraphQL вы можете получить обе машины одним вызовом, используя следующий пример запроса:
GET /api?query={ car(ids: [25, 83]) { model, manufacturer { address } } }
Обратите внимание, как вы даже указали точные данные, которые хотите получить (модель, производитель и его адрес). По сравнению с REST, конечная точка ("api") больше не определяется ресурсом c.
Некоторые преимущества
- Как уже упоминалось в вопросе Вы можете уменьшить количество HTTP-операций с помощью запросов GraphQL (избегайте недостаточной выборки).
- Точно указав, какие данные вы хотите получить, вы можете уменьшить накладные расходы, передаваемые через интерфейс ( избегайте чрезмерного извлечения).
- Используя гибкие запросы с GraphQL, вы с большей вероятностью избежите слишком тесного связывания потребителя интерфейса с производителем, если не будете точно реализовывать требования определенного c потребителя в интерфейсе REST. с определенными конечными точками.
- Поскольку каждый потребитель точно указывает, какие данные требуются в GraphQL, вы можете собрать более подробную статистику использования данных в своем бэкэнде.