Разработчики) | Facebook и сообщество |
---|---|
Первый выпуск | 14 сентября 2015 г. |
Стабильный выпуск | Июнь 2018 [1] |
Репозиторий | github |
Написано в | Реализации на Java , JavaScript , Ruby , Scala и др. |
Операционная система | Кроссплатформенность |
Веб-сайт | graphql |
GraphQL - это язык запросов и манипулирования данными с открытым исходным кодом для API , а также среда выполнения для выполнения запросов с существующими данными. [2] GraphQL был разработан внутри Facebook в 2012 году до публичного выпуска в 2015 году. [3] 7 ноября 2018 года проект GraphQL был перенесен из Facebook в недавно созданный GraphQL Foundation, размещенный некоммерческой организацией Linux Foundation . [4] [5] С 2012 года развитие GraphQL следовало графику принятия, установленному Ли Байроном, создателем GraphQL, с точностью. [6] Цель Байрона - сделать GraphQL вездесущим на всех веб-платформах.
Он обеспечивает подход к разработке веб-API и сравнивается с REST и другими архитектурами веб-сервисов . Он позволяет клиентам определять структуру требуемых данных, и та же структура данных возвращается с сервера, что предотвращает возврат слишком больших объемов данных, но это имеет последствия для того, насколько эффективным может быть веб-кеширование результатов запроса. . Гибкость и богатство языка запросов также добавляют сложности, которые могут не иметь смысла для простых API. [7] [8] [9] Несмотря на название, GraphQL не предоставляет богатства графических операций, которые можно найти в полноценной базе данных графов, такой как Neo4j.или даже в диалектах SQL , поддерживающих транзитивное замыкание . Например, интерфейс GraphQL, который сообщает о родителях отдельного человека, не может вернуть в одном запросе набор всех своих предков.
GraphQL состоит из системы типов, языка запросов и семантики выполнения, статической проверки и самоанализа типов . Он поддерживает чтение, запись (изменение) и подписку на изменения данных (обновления в реальном времени - чаще всего реализуются с использованием веб-сокетов ). [10] Серверы GraphQL доступны для нескольких языков, включая Haskell , [11] JavaScript , [12] Perl , [13] Python , [14] Ruby , Java , C ++ , [15] C # , Scala , Go , Rust ,Эликсир , [16] Erlang , PHP , R , D [17] и Clojure .
9 февраля 2018 года язык определения схемы GraphQL (SDL) стал частью спецификации. [18]
Пример [ править ]
POST запрос:
{ orders { я бы productsList { продукт { название цена } количество } Общая сумма }}
Ответ:
{ "data" : { "orders" : [ { "id" : 1 , "productsList" : [ { "product" : { "name" : "orange» , "price" : 1.5 }, "amount" : 100 }) ], "totalAmount" : 150 } ] } }
См. Также [ править ]
- Запрос по примеру
- Спецификация OpenAPI
- Микросервисы
Ссылки [ править ]
- ^ «Заметки о выпуске GraphQL за июнь 2018 г.» . Проверено 26 марта 2019 .
- ^ «GraphQL: язык запросов для API» .
- ^ «GraphQL: язык запросов данных» .
- ^ «Facebook GraphQL получает собственный фундамент с открытым исходным кодом» . TechCrunch . Проверено 7 ноября 2018 .
- ^ «Linux Foundation объявляет о намерении сформировать новый фонд для поддержки GraphQL - Linux Foundation» . Фонд Linux . 6 ноября 2018 . Проверено 7 ноября 2018 .
- ^ Энтони, ст. "Движется ли GraphQL к повсеместности?" . NordicAPI .
- ^ «GraphQL vs REST: Обзор» . Фил Стерджен . Проверено 25 ноября 2018 года .
- ^ «Зачем использовать GraphQL, хорошие и плохие причины» . Честная инженерия . 4 августа 2018 . Проверено 26 ноября 2018 года .
- ^ «Основы GraphQL» . Как сделать GraphQL . Проверено 4 июля 2018 года .
- ^ "GraphQL" . facebook.github.io . Facebook . Архивировано из оригинала 18 июля 2018 года . Проверено 4 июля 2018 года .
- ^ "Hasura - Instant Realtime GraphQL на Postgres" . Хасура . Проверено 24 октября 2019 года .
- ^ "GraphQL js" .
- ^ "GraphQL - Perl реализация GraphQL" .
- ^ «Графен» . graphene-python.org . Проверено 18 июня +2017 .
- ^ graphql / libgraphqlparser , GraphQL, 27 мая 2020 г. , получено 30 мая 2020 г.
- ^ «Абсент: набор инструментов GraphQL для Эликсира» . Проверено 19 июля 2018 года .
- ^ https://code.dlang.org/packages/graphqld
- ^ "GraphQL SDL включен в репозиторий Github" .
Внешние ссылки [ править ]
- Официальный веб-сайт