GraphQL

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

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

У своїй промові 2016 року Лі Байрон, розповів про свій план із впровадження 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. 
  6. Anthony, Art. Is GraphQL Moving Toward Ubiquity?. NordicAPIs. Архів оригіналу за 19 вересня 2020. Процитовано 22 березня 2020. 
  7. GraphQL vs REST: Overview. Phil Sturgeon (en-GB). Архів оригіналу за 26 квітня 2020. Процитовано 25 листопада 2018. 
  8. Why use GraphQL, good and bad reasons. Honest Engineering (амер.). 4 серпня 2018. Архів оригіналу за 26 листопада 2018. Процитовано 26 листопада 2018. 
  9. GraphQL Fundamentals. Howto GraphQL. Архів оригіналу за 5 липня 2018. Процитовано 4 липня 2018. 
  10. GraphQL. facebook.github.io. Facebook. Архів оригіналу за 18 липня 2018. Процитовано 4 липня 2018. 
  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. 

Посилання[ред. | ред. код]