1.8 KiB
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": { ... }
})
})