Перейти до вмісту

GraphQL

Матеріал з Вікіпедії — вільної енциклопедії.
GraphQL
Image
Типграфова мова запитівd і вебППІd Редагувати інформацію у Вікіданих
АвторMeta Platforms Редагувати інформацію у Вікіданих
РозробникиFacebook і спільнота
Перший випуск2015
Стабільний випускчервень 2018[1]
Операційна системаБагатоплатформна
Мова програмуванняВтілена на Java, JavaScript, Ruby, Scala ті інших.
Ліцензіямодифікована ліцензія BSDd Редагувати інформацію у Вікіданих
Онлайн-документаціяgraphql.org/learn/ Редагувати інформацію у Вікіданих
Репозиторійgithub.com/graphql/graphql-spec
Вебсайтgraphql.org

GraphQL — мова запитів і маніпуляції даними з відкритим кодом для API і середовище виконання для обслуговування запитів з наявних даних.[2] GraphQL розробив Facebook у 2012, а публічний реліз відбувся 2015 року.[3] 7 листопада 2018 року GraphQL було переведено від Facebook до новоутвореної GraphQL Фундації, яку прихистила неприбуткова Linux Фундація.[4][5]

У своїй промові 2016 року директор фонду GraphQL Лі Байрон розповів про свій план із впровадження GraphQL:[6]

  • 1-3 місяці — Хобі й особисті проєкти
  • 6 місяців — Реалізації на 3+ мовах
  • 9-12 місяців — Нові стартапи і маленькі компанії
  • 1,5-2 роки — Реалізації на 10+ мовах (в дійсності зайняло 3 місяці)
  • 2-4 роки — Великі компанії і технологічні гіганти
  • 4-5 років — Повсюдність!

Ціль Байрона зробити GraphQL всюдисутнім поміж вебплатформ.

GraphQL надає підхід розробки веб API і його можна порівнювати і протиставляти REST та іншим архітектурам вебсервісів. Він дозволяє клієнтам визначати структуру потрібних даних і таку саму структуру повертає сервер, таким чином запобігаючи передачі надлишкових даних, але це впливає на дієвість вебкешування результатів запитів. Гнучкість і багатість мови запитів, що може бути не потрібна для простих API.[7][8][9] Він складається з системи типів, мови запитів і семантики виконання, статичної валідації і інтроспекції.

GraphQL підтримує читання, писання (змінювання) і підписування на зміни даних (оновлення в реальному часі — зазвичай втілені за допомогою Webhook).[10]

Сервери GraphQL доступні на багатьох мовах включно з Haskell[11], JavaScript,[12] Perl,[13] Python,[14] Ruby, Java, C#, Scala, Go, Elixir,[15] Erlang, PHP, R і Clojure.

Термінологія

[ред. | ред. код]

Схема

[ред. | ред. код]

Схема визначає систему типів. Вона описує множину можливих даних (об'єктів, полів, зв'язків та ін.) до чого клієнт може доступитись. Виклики від клієнта валідуються і виконуються згідно зі схемою. Клієнт може знайти інформацію про схему через інтроспекцію. Схему зберігають на GraphQL API сервері.

Поле — це одиниця даних, яку можна отримати з об'єкта. З офіційної документації Мова запитів GraphQL це, по суті, вибирання полів з об'єктів.

Аргумент

[ред. | ред. код]

Це множина пар ключ-значення припасованих до певного поля. Кожне поле на типі об'єкта може мати нуль або більше аргументів, наприклад поле length:

type Starship {
  id: ID!
  length(unit: LengthUnit = METER): Float
}

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. ↑ GraphQL June 2018 Release Notes. Архів оригіналу за 16 жовтня 2020. Процитовано 26 березня 2019.
  2. ↑ GraphQL: A query language for APIs. Архів оригіналу за 26 квітня 2016. Процитовано 22 березня 2020.
  3. ↑ GraphQL: A data query language. Архів оригіналу за 8 січня 2019. Процитовано 22 березня 2020.
  4. ↑ Facebook’s GraphQL gets its own open-source foundation. TechCrunch (амер.). Архів оригіналу за 22 січня 2019. Процитовано 7 листопада 2018.
  5. ↑ The Linux Foundation Announces Intent to Form New Foundation to Support GraphQL - The Linux Foundation. The Linux Foundation (амер.). 6 листопада 2018. Архів оригіналу за 28 січня 2019. Процитовано 7 листопада 2018. [Архівовано 2019-01-28 у Wayback Machine.]
  6. ↑ Anthony, Art. Is GraphQL Moving Toward Ubiquity?. NordicAPIs. Архів оригіналу за 19 вересня 2020. Процитовано 22 березня 2020.
  7. ↑ GraphQL vs REST: Overview. Phil Sturgeon (брит.). Архів оригіналу за 26 квітня 2020. Процитовано 25 листопада 2018.
  8. ↑ Why use GraphQL, good and bad reasons. Honest Engineering (амер.). 4 серпня 2018. Архів оригіналу за 26 листопада 2018. Процитовано 26 листопада 2018. [Архівовано 2018-11-26 у Wayback Machine.]
  9. ↑ GraphQL Fundamentals. Howto GraphQL. Архів оригіналу за 5 липня 2018. Процитовано 4 липня 2018.
  10. ↑ GraphQL. facebook.github.io. Facebook. Архів оригіналу за 18 липня 2018. Процитовано 4 липня 2018. [Архівовано 2018-07-18 у Wayback Machine.]
  11. ↑ Hasura – Instant Realtime GraphQL on Postgres. Hasura. Архів оригіналу за 28 жовтня 2019. Процитовано 24 жовтня 2019.
  12. ↑ GraphQL js. Архів оригіналу за 15 квітня 2020. Процитовано 22 березня 2020.
  13. ↑ GraphQL - Perl implementation of GraphQL. Архів оригіналу за 17 травня 2020. Процитовано 22 березня 2020.
  14. ↑ Graphene. graphene-python.org. Архів оригіналу за 12 жовтня 2015. Процитовано 18 червня 2017.
  15. ↑ Absinthe: The GraphQL toolkit for Elixir. Архів оригіналу за 6 липня 2018. Процитовано 19 липня 2018.

Посилання

[ред. | ред. код]