Почему не использовать JSON API вместо GraphQL

«Почему не использовать JSON API вместо GraphQL» — вопрос из категории Архитектура, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

GraphQL предоставляет более гибкий и эффективный способ работы с данными по сравнению с JSON API. Вот ключевые отличия:

  1. Гибкость запросов: GraphQL позволяет клиенту запрашивать только нужные данные, избегая over-fetching (лишних данных) и under-fetching (недостающих данных). В JSON API это сложнее реализовать без создания множества эндпоинтов.

  2. Один запрос для сложных данных: GraphQL может агрегировать данные из нескольких источников в одном запросе, тогда как JSON API требует нескольких запросов.

  3. Строгая типизация: GraphQL имеет встроенную систему типов, что упрощает валидацию и документацию.

Пример:

# GraphQL запрос
query {
  user(id: 1) {
    name
    posts {
      title
    }
  }
}

В JSON API для этого потребовалось бы минимум 2 запроса: /users/1 и /users/1/posts.

Однако JSON API проще в реализации для простых сценариев и имеет лучшую поддержку кэширования на уровне HTTP.