Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Knowledge Base O nás Spolupráce Kariéra
Pojďme to probrat

GraphQL: Facebook představuje alternativu k REST

24. 04. 2015 2 min čtení CORE SYSTEMSdevelopment

Facebook open-sourcoval GraphQL — dotazovací jazyk pro API, který řeší over-fetching a under-fetching problém REST. Jak GraphQL funguje a kdy ho použít.

Problémy REST API v mobilní éře

REST API designované pro webové aplikace často nefungují ideálně pro mobilní klienty. Typické problémy:

  • Over-fetching** — endpoint vrací víc dat, než klient potřebuje
  • Under-fetching** — klient musí volat více endpointů pro jednu obrazovku
  • Verze API** — každá změna vyžaduje nový endpoint nebo verzi

Facebook čelil těmto problémům v roce 2012 při přechodu na nativní mobilní aplikaci. Výsledkem interního R&D je GraphQL.

Jak GraphQL funguje

GraphQL je dotazovací jazyk — klient specifikuje přesně, jaká data potřebuje:

query {
  user(id: "123") {
    name
    email
    posts(last: 5) {
      title
      createdAt
      comments {
        text
        author { name }
      }
    }
  }
}

Jeden request, přesně ta data, která potřebujete. Žádné zbytečné přenosy, žádné vodopádové requesty.

Type system a introspekce

GraphQL schema definuje typový systém API:

type User {
  id: ID!
  name: String!
  email: String
  posts: [Post!]!
}

type Post {
  id: ID!
  title: String!
  content: String
  author: User!
}

type Query {
  user(id: ID!): User
  posts(limit: Int): [Post!]!
}

Introspekce umožňuje nástrojům automaticky generovat dokumentaci a IDE autocomplete. GraphiQL — interaktivní playground — je killer feature pro vývojáře.

GraphQL vs REST: kdy co použít

GraphQL není náhrada REST pro všechny scénáře:

  • GraphQL** — komplexní datové modely, mobilní klienti, hodně vztahů mezi entitami
  • REST** — jednoduché CRUD, file upload/download, caching na HTTP úrovni, public API s jednoduchými endpointy

Pro enterprise aplikace s bohatým frontend doporučujeme zvážit GraphQL jako primární API vrstvu.

Závěr: budoucnost API designu

GraphQL mění způsob, jakým přemýšlíme o API. Přesunutí moci ke klientovi — ten definuje, co potřebuje — je fundamentální posun. Sledujte ekosystém (Relay, Apollo) a zvažte GraphQL pro váš příští projekt s komplexním datovým modelem.

graphqlapirestfacebookbackendwebový vývoj