GraphQL - это язык запросов, созданный инженерами Facebook, который лучше (всех) ReST. Но если вы попытаетесь получить краткий обзор того, что именно представляет собой GraphQL, от указанных инженеров, они определяют его не такими простыми терминами. На веб-сайте GraphQL вы прочитаете, что «GraphQL - это язык запросов, разработанный для создания клиентских приложений, обеспечивающий гибкий и интуитивно понятный синтаксис для запроса данных, необходимых клиентам». Давайте кое-что проясним.

Основная цель - сделать наши запросы умнее. Прямо сейчас с API у нас огромная проблема с избыточной или недостаточной выборкой. Мы либо получаем обратно такие ограниченные данные, что для получения желаемого результата требуются два или более запроса, либо, когда нам нужен один аспект данных, мы получаем обратно целый беспорядок данных, которые нам не нужны.

Чтобы решить эту проблему, ReST API начал использовать необязательные параметры и идентификаторы с конечной точкой. Однако данные, которые мы получаем здесь, по-прежнему приводят к недостаточной выборке, а без идентификатора, опять же, у нас есть избыточная выборка. Давайте воспользуемся расширенной метафорой, чтобы доказать это.

ReST API похож на ресторан со шведским столом с самообслуживанием, где у GraphQL есть официанты с модными бабочками. Что касается фуршета, вы встаете и подходите к каждому столу, обдумывая свой выбор и выбирая несколько вещей из множества. С официантом вы, как клиент, с самого начала делаете разумный, четкий выбор, четко спрашивая, что вы хотите в качестве еды.

Как видите, GraphQL - это официант, который позволяет вам экономить поездки туда и обратно из всех этих хитрых API. Это позволит нам описать наши данные, спросить, что вы хотите, и получить предсказуемые результаты.

Теперь, чтобы задать и ответить на некоторые часто задаваемые вопросы.

Связан ли GraphQL с графовыми базами данных?

Нет. Как Java и Javascript, Car и Carpet, они не похожи.

Стоит ли мне прекратить использовать Rest API сейчас?

Нет, большинство приложений по-прежнему используют Rest API и работают нормально. Тем не менее, вы заметите, что по мере того, как мы создаем все больше и больше новых API, я думаю, что GraphQL в конечном итоге опередит ReST.

Каков синтаксис GraphQL?

Взгляните на приведенный ниже блок кода, который был бы возвращен, если бы я был пятым пользователем и владельцем Medium.

Basic Query in GraphQL
{
    user(id: 5) {
      name,
      website
    }
}
Response in GraphQL
{
    "data": {
      "user": {
         "name": "Lisa Smith",
         "website": "https://medium.com"
      }
    }
}

Что мне нужно реализовать или изучить GraphQL?

Есть два основных компонента: серверная и клиентская. Если у API есть сервер GraphQL, который уже существует (например, Yelp и Twitter), вы золотая середина, и вам нужно использовать только клиентский компонент. Однако в большинстве случаев для создания полнофункционального приложения вам понадобится серверная библиотека. Быстрый запуск может быть node / GraphQL или express / GraphQL или Apollo. Для клиента вы также можете использовать Relay или Apollo.

В заключение, теперь у вас есть все необходимое, чтобы начать читать документацию и знакомиться с GraphQL!