/ˈɡræf.kjuː.ɛl/

n. “A smarter way to ask for exactly the data you need.”

GraphQL is a query language and runtime for APIs, originally developed by Facebook, that allows clients to request precisely the data they need from a server, no more and no less. Unlike traditional REST APIs, where endpoints return fixed structures, GraphQL gives clients the flexibility to shape responses, reducing over-fetching and under-fetching of data.

Key characteristics of GraphQL include:

  • Declarative Queries: Clients specify exactly which fields they want, and the server responds with just that data.
  • Single Endpoint: Unlike REST which often has multiple endpoints, GraphQL typically operates through a single endpoint that handles all queries and mutations.
  • Strongly Typed Schema: The API is defined using a schema that specifies object types, fields, and relationships, enabling introspection and tooling support.
  • Real-Time Capabilities: Supports subscriptions, allowing clients to receive updates when data changes.

Here’s a simple example of a GraphQL query to fetch user information:

query {
  user(id: "123") {
    id
    name
    email
  }
}

The server would respond with exactly the requested fields:

{
  "data": {
    "user": {
      "id": "123",
      "name": "Alice",
      "email": "alice@example.com"
    }
  }
}

In essence, GraphQL is a more efficient and flexible approach to APIs, giving clients precise control over data retrieval while maintaining a strongly typed, introspectable schema for developers.