Skip to content

Что такое GraphQL

Коротко:

GraphQL — query language для API + runtime, разработан Facebook (2015). Один endpoint /graphql, клиент указывает какие поля нужны в response — нет over-fetching / under-fetching как в REST. Типизированная schema. Плюсы: точный data shape, versionless API. Минусы: сложнее caching (единственный endpoint), N+1 queries без DataLoader.

Ниже: подробности, пример, смежные термины, FAQ.

Подробности

  • Schema: types + queries + mutations + subscriptions
  • Query: read, GET-like. Mutation: write. Subscription: websocket для realtime
  • Resolvers: функции, fetching данные per field
  • Introspection: schema.json для всех полей
  • Tooling: GraphiQL (browser playground), Apollo Client/Server, Relay

Пример

query GetUser($id: ID!) {
  user(id: $id) {
    name
    email
    posts(first: 10) {
      title
    }
  }
}

Смежные термины

Больше по теме

Часто задаваемые вопросы

GraphQL vs REST — что быстрее?

GraphQL быстрее для complex UIs (меньше round-trips). REST — для simple CRUD (лучше caching).

Как решить N+1 problem?

DataLoader (Facebook): батчинг + caching per-request. Или persistent queries + query whitelisting.

Caching сложнее чем REST?

Да. REST — HTTP cache по URL. GraphQL — нужен application-level cache по query. Apollo Client handles это из коробки.