Несколько месяцев назад я впервые услышал о GraphQL. Как и другие, я предположил, что это еще одна библиотека визуализации, похожая на Victory. Не потребовалось много исследований, чтобы понять, что, во-первых, это не библиотека визуализации, а во-вторых, что-то, что я сразу почувствовал, может быть мощным инструментом как для сервера, так и для клиента.

Почему GraphQL?

GraphQL был выпущен для широкой публики в 2015 году компанией Facebook, которая активно использует GraphQL с 2012 года. GraphQL — это язык запросов для вашего API. Это позволяет вашим клиентам создавать запросы, чтобы определить, какие данные нужно получить, и как структурировать данные.

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

  1. Единая конечная точка для всех ваших представлений.
  2. Какие данные и структуру данных может определить клиент.
  3. Поддержка нескольких версий и/или платформ.

Например, предположим, что у нас есть один сервер, поддерживающий настольные компьютеры, iOS и Android. Во всех приложениях у нас есть два представления (представление-A и представление-B), которые отображают данные, связанные с автомобилем. View-A требуется только для отображения данных обзора автомобиля, таких как год, марка, модель, цвет. View-B — это более подробный вид, который требуется для отображения всего вышеперечисленного, а также дополнительных данных, таких как двери, пробег и состояние.

В сценарии на основе REST у нас есть несколько вариантов: мы можем создать несколько маршрутов, реализовать параметры запроса для определения информации и/или, возможно, создать сложное промежуточное ПО для обработки каждого представления на каждой платформе. Запросы к базе данных также будут различаться в зависимости от платформы или представления.

С помощью GraphQL на сервере мы можем реализовать единый маршрут для обслуживания всех платформ и обоих представлений. На клиенте мы бы просто определили, какие данные нам нужны и как мы хотели бы структурировать данные. Единая конечная точка для всех платформ и для обоих наших воображаемых представлений.

Кроме того, если мы добавим дополнительное представление, дополнительная разработка на стороне сервера не требуется.

Резюме

Перевод уже существующей инфраструктуры на GraphQL потребует некоторого обучения и работы, но преимущества внедрения GraphQL очевидны. Подводя итог, я думаю, что GraphQL предназначен для тех, кто чувствует, что перерос RESTful API.

В настоящее время sparq.rocks находится в стадии альфа-тестирования. Мы стремимся предоставить пользователям готовую серверную часть GraphQL как услугу.