Первое, что нужно знать: GraphQL — это спецификация (как она должна работать и выглядеть), а не реализация. GraphQL не нужно устанавливать, вы реализуете его с помощью серверной библиотеки, клиентской среды, такой как Apollo, и игровых площадок, таких как GraphiQL или Graphcool, для проверки ваших запросов.

Ключевые моменты GraphQL:

  • среда выполнения на стороне сервера
  • быстрый, гибкий, удобный для разработчиков
  • предоставляет клиентам именно те данные, которые они хотят/указали, а не всю полезную нагрузку данных
  • отличные реляционные запросы — все запросы можно выполнить в одном запросе, без «избыточной выборки»²
  • предоставляет бэкенд-разработчикам систему типов для разработки схемы данных
  • сильные типы данных уменьшают количество ошибок между клиентом и сервером
  • несколько URL-адресов для получения данных отбрасываются, вместо этого теперь есть только одна точка входа
  • ответ по-прежнему отправляется обратно как json
  • синтаксис может работать с любым языком программирования
  • потребитель читает данные с помощью «типа запроса»
  • потребитель мутирует (создает, обновляет, удаляет) данные с помощью «мутации типа»

GraphQL: более простые реляционные запросы, самодокументирование. С GraphQL Server, как только вы запускаете сервер, выполняются вызовы API, принимаются и обрабатываются ответы, и только необходимые данные помещаются в форму, которую мы запросили/указали для запросов на стороне клиента. В отличие от RESTful API, теперь нет времени ожидания ответа, ответ уже обработан. Единственное время ожидания — это получение и представление данных из облака.¹ Вызов и ответ обрабатываются, как только сервер начинает работать, что ускоряет работу приложения.

Аполлон

Аполлон: система GraphQL. Не такой самоуверенный, как Relay, и меньше кода. Легко начать работу с GraphQL

Apollo состоит из 2 компонентов: сервера Apollo и клиента Apollo.

Сервер Apollo — это то, что позволяет Apollo и GraphQL работать вместе и станет API на стороне клиента. Apollo заменяет API, а мутации заменят маршруты на стороне сервера и методы Meteor.

Сервер Apollo создает график для вашего приложения, а затем позволяет вам создать API для подключения к этому графику. Доступ к этому графику осуществляется через одну конечную точку GraphQL. Оформить заказ Теория графов здесь.

ОТЛИЧНЫЙ! ДАВАЙТЕ СТРОЙ

Сборка с этого момента будет полностью основана на заметках, которые я делаю, просматривая БЕСПЛАТНОЕ руководство willjw3 по Full-Stack Apollo GraphQL с React и Node — здесь. Я не могу брать кредит на то, что последует!

Мы собираемся создать полнофункциональное приложение с помощью: Apollo, GraphQL & React.js и Node.

Создайте каталог приложения и перейдите в него с помощью команды терминала: mkdir graphql-usgs-earthquake-api && cd graphql-usgs-earthquake-api.

Инициализируйте приложение с помощью команды терминала: npm init -y .

Я узнал, что вы можете установить более 1 пакета узлов в 1 команду. Например, нам нужно установить Apollo Server и GraphQL. Установите их оба с помощью команды терминала: npm i apollo-server graphql.

Откройте свое приложение в предпочитаемом вами текстовом редакторе.

Настройте 2 каталога в корне вашего приложения: Server & Client . Это команды терминала mkdir server и mkdir client .

В папке сервера настройте 2 файла: index.js и schema.js . В файле index.js введите следующий код (прямо из документации Apollo здесь):

Напишите файл schema.js (прямо из Apollo Docs здесь):

Добавление определений типов в schema.js:

Вернувшись в файл index.js, добавьте вызов сервера в конец файла:

Нам потребуется установить Nodemon для автоматического обновления сервера; введите команду терминала: npm i nodemon . Настройте собственный скрипт для запуска сервера в файле package.json ((строка 7)):

Ваш терминал должен показать вам, что вы успешно работаете:

Кроме того, если все успешно подключено, если вы перейдете на http://localhost:4000/, вы увидите, что теперь у вас есть полный доступ к игровой площадке GraphQL:

Посмотреть схему можно на игровой площадке:

Или вы можете просмотреть документы:

Подключение источников данных

Давайте настроим файл, который будет извлекаться непосредственно из API Геологической службы США, чтобы посмотреть, какие данные о землетрясениях мы получаем. Этот файл не будет использоваться в нашем приложении в долгосрочной перспективе, это будет просто тестовая площадка.

Установите Node-Fetch: npm i node-fetch .

В корневой папке создайте новую папку: mkdir dataExplore . Настройте в этой папке файл с именем earthquakeFetch.js .

Запустите этот файл и выполните выборку с помощью команды терминала: node dataExplore/earthquakeFetch.js .

Создать внешний источник данных API

Установите пакет Apollo REST Data Source: npm i apollo-datasource-rest . Этот пакет экспортирует класс (RESTDataSource), который используется для извлечения данных из REST API и предоставления их через GraphQL на сервере Apollo.

Создайте папку внутри папки сервера и назовите ее datasources . Внутри источников данных создайте файл earthquake.js.

Добавить источник данных на сервер Apollo

После создания источника данных его необходимо добавить на сервер Apollo.

Обновите файл index.js (внутри папки сервера) следующим кодом:

Прямо из документации: Передайте параметр dataSources конструктору ApolloServer. Эта опция представляет собой функцию, которая возвращает объект, содержащий вновь созданные источники данных. Это соединяет экземпляры землетрясений API с нашим графиком.

Напишите преобразователи графов

Преобразователи графов позволяют просматривать данные на игровой площадке GraphQL. Что такое резольвер? Преобразователь — это функция, которая отвечает за заполнение данных для одного поля в вашей схеме. Когда клиент делает запрос, распознаватель отвечает за получение запрошенных данных из правильного источника данных.

Преобразователь возвращает одно из следующих значений:

  • Данные требуемого типа (согласно соответствующему полю схемы преобразователя)
  • Обещание, которое выполняется с данными требуемого типа

Для начала мы обновим наш server/index.js, чтобы он требовал файл преобразователя, и передаем этот модуль в ApolloServer (строки 3 и 9):

Настройте файл распознавателей: непосредственно в папке server создайте новый файл: resolvers.js . (Обратите внимание, что сигнатура функции преобразователя: fieldName: (parent, args, context, info) => data; )

Здорово! Теперь давайте удостоверимся, что все запрашивается правильно. Перейдите на игровую площадку GraphQL: http://localhost:4000/. введите свой запрос в левый столбец (примечание: контрольное пространство предоставит вам все возможные варианты запросов), затем нажмите кнопку запуска (стрелка в центре экрана), и ваш запрос, если весь код был реализован правильно, должен заполниться в правая часть экрана:

РЕПО: https://github.com/osha7/graphql-usgs-earthquake-api

  1. Полный стек Apollo GraphQL с React и Node | willjs3 | «https://www.youtube.com/watch?v=VjXb3PRL9WI»
  2. Что такое GraphQL | красная шляпа | «https://www.redhat.com/en/topics/api/what-is-graphql»
  3. GraphQL | «https://graphql.org/»
  4. Аполлон | «https://www.apollographql.com/docs/»
  5. Что такое GraphQL | LevelUpTuts | «https://www.youtube.com/watch?v=VjXb3PRL9WI»
  6. GraphQL объясняется за 100 секунд | Огненный корабль | «https://www.youtube.com/watch?v=eIQh02xuVw4»
  7. Полный стек GraphQL с Apollo, Meteor и React | Учебники по повышению уровня | «https://www.leveluptutorials.com/tutorials/full-stack-graphql-with-apollo-meteor-and-react»