Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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
  • Микросервисы

Ссылки [ править ]

  1. ^ «Заметки о выпуске GraphQL за июнь 2018 г.» . Проверено 26 марта 2019 .
  2. ^ «GraphQL: язык запросов для API» .
  3. ^ «GraphQL: язык запросов данных» .
  4. ^ «Facebook GraphQL получает собственный фундамент с открытым исходным кодом» . TechCrunch . Проверено 7 ноября 2018 .
  5. ^ «Linux Foundation объявляет о намерении сформировать новый фонд для поддержки GraphQL - Linux Foundation» . Фонд Linux . 6 ноября 2018 . Проверено 7 ноября 2018 .
  6. ^ Энтони, ст. "Движется ли GraphQL к повсеместности?" . NordicAPI .
  7. ^ «GraphQL vs REST: Обзор» . Фил Стерджен . Проверено 25 ноября 2018 года .
  8. ^ «Зачем использовать GraphQL, хорошие и плохие причины» . Честная инженерия . 4 августа 2018 . Проверено 26 ноября 2018 года .
  9. ^ «Основы GraphQL» . Как сделать GraphQL . Проверено 4 июля 2018 года .
  10. ^ "GraphQL" . facebook.github.io . Facebook . Архивировано из оригинала 18 июля 2018 года . Проверено 4 июля 2018 года .
  11. ^ "Hasura - Instant Realtime GraphQL на Postgres" . Хасура . Проверено 24 октября 2019 года .
  12. ^ "GraphQL js" .
  13. ^ "GraphQL - Perl реализация GraphQL" .
  14. ^ «Графен» . graphene-python.org . Проверено 18 июня +2017 .
  15. ^ graphql / libgraphqlparser , GraphQL, 27 мая 2020 г. , получено 30 мая 2020 г.
  16. ^ «Абсент: набор инструментов GraphQL для Эликсира» . Проверено 19 июля 2018 года .
  17. ^ https://code.dlang.org/packages/graphqld
  18. ^ "GraphQL SDL включен в репозиторий Github" .

Внешние ссылки [ править ]

  • Официальный веб-сайт