GraphQL Basics

GraphQL queries, mutations, and schema basics.

Query Syntax

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

Multiple fields
query {
  users {
    id
    name
    posts {
      title
    }
  }
}

Query with variables
query GetUser($id: ID!) {
  user(id: $id) {
    name
  }
}

Mutations

Create mutation
mutation {
  createUser(input: {
    name: "John"
    email: "[email protected]"
  }) {
    id
    name
  }
}

Update mutation
mutation {
  updateUser(
    id: "123"
    input: { name: "Jane" }
  ) {
    id
    name
  }
}

Delete mutation
mutation {
  deleteUser(id: "123") {
    success
  }
}

Schema Definition

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

Query type
type Query {
  user(id: ID!): User
  users: [User]
}

Mutation type
type Mutation {
  createUser(input: UserInput!): User
  updateUser(id: ID!, input: UserInput!): User
}

Fragments

Define fragment
fragment UserFields on User {
  id
  name
  email
}

Use fragment
query {
  user(id: "123") {
    ...UserFields
  }
}