GraphQL - Архитектура

GraphQL - это спецификация, описывающая поведение сервера GraphQL. Это набор рекомендаций о том, как должны обрабатываться запросы и ответы, такие как поддерживаемые протоколы, формат данных, которые могут быть приняты сервером, формат ответа, возвращаемого сервером, и т. Д. Запрос, сделанный клиентом к GraphQL сервер называется запросом. Еще одна важная концепция GraphQL - агностика транспортного уровня. Его можно использовать с любым доступным сетевым протоколом, таким как TCP, websocket или любым другим протоколом транспортного уровня. Он также нейтрален для баз данных, поэтому вы можете использовать его с реляционными базами данных или базами данных NoSQL.

Сервер GraphQL можно развернуть с помощью любого из трех методов, перечисленных ниже:

  • Сервер GraphQL с подключенной базой данных
  • Сервер GraphQL, объединяющий существующие системы
  • Гибридный подход

Сервер GraphQL с подключенной базой данных

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

На приведенной выше диаграмме сервер GraphQL и база данных интегрированы на одном узле. Клиент (настольный / мобильный) взаимодействует с сервером GraphQL через HTTP. Сервер обрабатывает запрос, извлекает данные из базы данных и возвращает их клиенту.

Сервер GraphQL, интегрирующий существующие системы

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

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

Гибридный подход

Наконец, мы можем объединить два вышеуказанных подхода и создать сервер GraphQL. В этой архитектуре сервер GraphQL будет обрабатывать любой полученный запрос. Он будет получать данные из подключенной базы данных или из интегрированного API. Это представлено на рисунке ниже -