GraphQL
GraphQL — це мова запитів і маніпуляції даними з відкритим кодом для API і середовище виконання для обслуговування запитів з наявних даних.[2] GraphQL розробив Facebook у 2012, а публічний реліз відбувся 2015 року.[3] 7 листопаду 2018, GraphQL було переведено від Facebook до новоутвореної GraphQL Фундації, яку прихистила неприбуткова Linux Фундація.[4][5]
| |
Тип | графова мова запитівd і Веб-ППІd |
---|---|
Автор(и) | Meta Platforms |
Розробники | Facebook і спільнота |
Перший випуск | 2015 |
Стабільний випуск | червень 2018[1] |
Репозиторій | github.com/graphql/graphql-spec |
Операційна система | Багатоплатформна |
Мова програмування | Втілена на Java, JavaScript, Ruby, Scala ті інших. |
Вебсайт | graphql.org |
У своїй промові 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
}
Див. також
Примітки
- GraphQL June 2018 Release Notes. Процитовано 26 березня 2019.
- GraphQL: A query language for APIs.
- GraphQL: A data query language.
- Facebook’s GraphQL gets its own open-source foundation. TechCrunch (амер.). Процитовано 7 листопада 2018.
- The Linux Foundation Announces Intent to Form New Foundation to Support GraphQL - The Linux Foundation. The Linux Foundation (амер.). 6 листопада 2018. Процитовано 7 листопада 2018.
- Anthony, Art. Is GraphQL Moving Toward Ubiquity?. NordicAPIs.
- GraphQL vs REST: Overview. Phil Sturgeon (en-GB). Процитовано 25 листопада 2018.
- Why use GraphQL, good and bad reasons. Honest Engineering (амер.). 4 серпня 2018. Процитовано 26 листопада 2018.
- GraphQL Fundamentals. Howto GraphQL. Процитовано 4 липня 2018.
- GraphQL. facebook.github.io. Facebook. Архів оригіналу за 18 липня 2018. Процитовано 4 липня 2018.
- Hasura – Instant Realtime GraphQL on Postgres. Hasura. Процитовано 24 жовтня 2019.
- GraphQL js.
- GraphQL - Perl implementation of GraphQL.
- Graphene. graphene-python.org. Процитовано 18 червня 2017.
- Absinthe: The GraphQL toolkit for Elixir. Процитовано 19 липня 2018.