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. Это представлено на рисунке ниже -
