cheatsheets/graphql.md

1.8 KiB

title category
GraphQL Misc

Queries

{ status }
// → { status: 'available' }

Nesting

{ hero { name height } }
// → { hero:
//     { name: "Luke Skywalker",
//       height: 1.74 } }

Lists

GraphQL queries look the same for both single items or lists of items.

{ friends { name } }
// → { friends:
//     [ { name: "Luke Skywalker" },
//       { name: "Han Solo" },
//       { name: "R2D2" } ] }

Lookups

{
  hero(id: "1000") { id name }
}
// → { hero:
//     { id: "1000",
//     { name: "Luke Skywalker" } }

Aliases

{
  luke: hero(id: "1000") { name }
  han: hero(id: "1001") { name }
}
// → { luke:
//     { name: "Luke Skywalker" },
//     han:
//     { name: "Han Solo" } }

Operation names and variables

Just to make things less ambiguous. Also, to use variables, you need an operation name.

query FindHero($id: String!) {
  hero(id: $id) { name }
}
---
{ id: '1000' }     // Variables

Mutations

Mutations are just fields that do something when queried.

{ createReview($review) { id } }  // Query
---
{ review: { stars: 5 } }          // Variables
// → { createReview: { id: 5291 } }

Multiple types

Great for searching.

{
  search(q: "john") {
    id
    ... on User { name }
    ... on Comment { body author { name } }
  }
}

Over HTTP

// Get
fetch('http://myapi/graphql?query={me{name}')

POST

// Post
fetch('http://myapi/graphql', {
  body: JSON.stringify({
    query: "...",
    operationName: "...",
    "variables": { ... }
  })
})

Schema

See: https://raw.githubusercontent.com/sogko/graphql-shorthand-notation-cheat-sheet/master/graphql-shorthand-notation-cheat-sheet.png

References