GraphQL, описание для запроса
Альтернатива SQL для доступа к содержанию баз данных в одном запросе.
Это интерфейс к обычным базам данных, позволяющий более интуитивно читать и редактировать содержание. Его происхождение исходит из потребности Facebook в более быстрых мобильных приложениях: нужно было получать профили участников немедленно и более прямо.
Этот язык запросов особенно подходит, когда клиент, обычно мобильное или веб-приложение, хочет получить доступ к набору данных по одному запросу за раз, в то время как база постоянно меняется. Мы описываем запрос в виде плана, и получаем в ответ содержимое, соответствующее каждому участку плана...
На практике запрос похож на объект JavaScript, в котором указаны только имена атрибутов. Цель - получить ценность этих атрибутов. У нее иерархическая структура: для поста у нас есть набор данных, а для каждого, например автора, другие данные вроде имени и аватара.
Пример запроса:
{
post {
title,
content,
date,
author,
comments {
author {
name,
avatar
},
content
}
}
}
Эквивалент SQL требует доступа к нескольким таблицам - к записям, комментариям и зарегистрированным членам. Поэтому потребуется несколько ходатайств.
Получаем следующий ответ
{
"data" {
"post": {
"title": "Grande nouvelle",
"content": "Voilà ce qui s'est passé..."
"author": "Emma Kant",
"comments": [
{
"author": {
"name": "Joe",
"avatar": "x1"
},
"content": "Bien dit"
},
{
...etc...
}
]
}
}
}
Следует отметить, что в ответе атрибуты помещаются в скобки, в то время как запрос не применяется. Он предназначен для программного обеспечения, предназначенного для интерпретации такого типа структуры, в то время как ответ является объектом JSON, который может использоваться любым программным обеспечением и языком программирования.
Использовать GraphQL
Реализация была выполнена в JavaScript, который предлагается для скачивания на GitHub, GraphQL.js. Это модуль для Node.js, который устанавливается с npm.
Это скорее фреймворк, чем готовое к приему запросов программное обеспечение, остается реализовать собственный сервер запросов, что является базовым и когда ты знаком с Node.js. Сервер обеспечивает доступ к данным через HTTP, WebSocket или другой протокол. Вот пример сервера Node.js.
Простота формулирования запросов объясняется сложностью моделей, которые необходимо определить для обеспечения возможности такого рода запросов. Пример Star Wars, приведенный на сайте GraphQL, показывает нам достаточно: мы очень быстро хотим вернуться в SQL и его таблицы просто из строк и колонок!
Однако для баз данных со статической структурой и частыми запросами информации это является лучшим решением.
Реализация интерфейсов на разных языках - это движение, которое идет полным ходом, с уже реализациями для языков, используемых на сервере, таких как Java, Go, C #, JavaScript.
Ссылки и инструменты:
- ГрафикаQL. На GitHub, графический интерактивный интерфейс к запросам.