GraphQL — это спецификация, которая описывает поведение сервера GraphQL. Это набор рекомендаций о том, как следует обрабатывать запросы и ответы, например о поддерживаемых протоколах, о формате данных, которые могут быть приняты сервером, о формате ответов, возвращаемых сервером, и т. Д. Запрос, сделанный клиентом в GraphQL. Сервер называется Query. Другая важная концепция GraphQL — это агностика транспортного уровня. Он может использоваться с любым доступным сетевым протоколом, таким как TCP, веб-сокет или любой другой протокол транспортного уровня. Он также нейтрален для баз данных, поэтому вы можете использовать его с реляционными базами данных или базами данных NoSQL.
Сервер GraphQL может быть развернут любым из трех способов, перечисленных ниже:
- Сервер GraphQL с подключенной базой данных
- Сервер GraphQL, интегрирующий существующие системы
- Гибридный подход
Сервер GraphQL с подключенной базой данных
Эта архитектура имеет сервер GraphQL со встроенной базой данных и часто может использоваться с новыми проектами. При получении запроса сервер считывает полезную нагрузку запроса и получает данные из базы данных. Это называется разрешением запроса. Ответ, возвращаемый клиенту, соответствует формату, указанному в официальной спецификации GraphQL.
На приведенной выше диаграмме сервер GraphQL и база данных объединены в одном узле. Клиент (настольный / мобильный) связывается с сервером GraphQL через HTTP. Сервер обрабатывает запрос, получает данные из базы данных и возвращает их клиенту.
Сервер GraphQL, интегрирующий существующие системы
Этот подход полезен для компаний, которые имеют устаревшую инфраструктуру и разные API. GraphQL можно использовать для унификации микросервисов, устаревшей инфраструктуры и сторонних API в существующей системе.
На приведенной выше диаграмме API-интерфейс GraphQL действует как интерфейс между клиентом и существующими системами. Клиентские приложения связываются с сервером GraphQL, который, в свою очередь, разрешает запрос.
Гибридный подход
Наконец, мы можем объединить два вышеупомянутых подхода и построить сервер GraphQL. В этой архитектуре сервер GraphQL разрешит любой полученный запрос. Он будет либо извлекать данные из подключенной базы данных, либо из встроенных API. Это представлено на рисунке ниже —