🎯 Definicja
GraphQL to język zapytań (Query Language) dla interfejsów API oraz środowisko uruchomieniowe (runtime) do ich wykonywania. Został stworzony przez Facebooka w 2012 roku jako alternatywa dla architektury REST. Pozwala klientom na precyzyjne określenie, jakich danych potrzebują, eliminując problem pobierania nadmiarowych danych (over-fetching) lub niewystarczających danych (under-fetching).
🔑 Kluczowe punkty
- Brak nadmiarowości (No Over-fetching): Pobierasz tylko te pola, których aplikacja potrzebuje w danej chwili.
- Pojedynczy punkt końcowy (Single Endpoint): Wszystkie zapytania są kierowane na jeden adres URL (np.
/graphql, patrz: Endpoints and HTTP Headers). - Silne typowanie (Strongly Typed): API opiera się na ściśle zdefiniowanym schemacie (Schema), który automatycznie dokumentuje dostępne typy i relacje (patrz: Introspekcja).
- Agnostyczność technologiczna: GraphQL działa niezależnie od używanej bazy danych czy silnika przechowywania danych.
📚 Szczegółowe wyjaśnienie
W tradycyjnym REST API, pobranie profilu użytkownika i jego postów wymagałoby wywołania kilku endpointów (np. GET /users/1 i GET /users/1/posts). W GraphQL wykonujesz jedno zapytanie określające dokładnie strukturę wynikowego obiektu JSON:
Przykład Zapytania (Query):
query GetUserProfile {
user(id: "1") {
name
avatarUrl
posts {
title
}
}
}Typy operacji w GraphQL:
- Query (Zapytanie): Operacja tylko do odczytu. Pobiera dane bez modyfikacji czegokolwierk na serwerze (patrz: Zapytania w Ataccama ONE).
- Mutation (Mutacja): Służy do zapisu, edycji i usuwania danych oraz uruchamiania procesów (patrz: Mutacje w Ataccama ONE).
- Subscription (Subskrypcja): Umożliwia ciągły nasłuch zdarzeń i otrzymywanie aktualizacji w czasie rzeczywistym, zazwyczaj przez WebSockets (patrz: Subskrypcje w Ataccama ONE).
💡 Zastosowanie w Ataccama ONE
Interfejs ONE API opiera się w pełni na standardzie GraphQL. Pozwala on na zarządzanie konfiguracją obiektów i metadanymi. Przykładowo, za pomocą GraphQL możesz:
- Pobrać listę wszystkich terminów biznesowych przypisanych do użytkownika (patrz: Glossary Terms).
- Uruchomić zadanie ewaluacji jakości danych (DQ) dla określonego elementu katalogu (patrz: Data Quality).
- Odpytać o status asynchronicznego zadania profilowania (patrz: Profiling).
📌 Źródła
- Oficjalny samouczek GraphQL.org
- Specyfikacja standardu GraphQL (spec.graphql.org)