title
date
background
tags
categories
intro
plugins
GraphQL
2021-07-15 13:51:44 -0700
bg-[#cc44a2]
This quick reference cheat sheet provides a brief overview of GraphQL.
An alternative approach to RESTful APIs
GraphQL is a query language for APIs
Easily describe the shape of the GraphQL API using clear shared terms.
Clients issue queries/mutations to read and update data
GraphQL syntax can express complex entity relations
Libraries to implement GraphQL in different languages
GraphQL
{.link-arrow}
schema
GraphQL schema definition
query
Read and traverse data
mutation
Modify data or trigger an action
subscription
Run a query when an event occurs
Int
Signed 32‐bit integer
Float
Signed double-precision floating-point value
String
UTF‐8 character sequence
Boolean
true or false
ID
A Unique identifier
scalar
Scalar Type
type
Object Type
interface
Interface Type
union
Union Type
enum
Enum Type
input
Input Object Type
String
Nullable String
String!
Non-null String
[String]
List of nullable Strings
[String]!
Non-null list of nullable Strings
[String!]!
Non-null list of non-null Strings
Input Arguments {.row-span-2}
type Query {
users ( limit : Int ) : [ User ]
}
type Query {
users ( limit : Int = 10 ) : [ User ]
}
Input with multiple arguments
type Query {
users ( limit : Int , sort : String ) : [ User ]
}
Input with multiple arguments and default values
type Query {
users ( limit : Int = 10 , sort : String ) : [ User ]
}
type Query {
users ( limit : Int , sort : String = "asc" ) : [ User ]
}
type Query {
users ( limit : Int = 10 , sort : String = "asc" ) : [ User ]
}
input ListUsersInput {
limit: Int
since_id: ID
}
type Mutation {
users ( params : ListUsersInput ) : [ User ] !
}
scalar Url
type User {
name: String
homepage: Url
}
interface Foo {
is_foo : Boolean
}
interface Goo {
is_goo : Boolean
}
type Bar implements Foo {
is_foo: Boolean
is_bar: Boolean
}
type Baz implements Foo , Goo {
is_foo: Boolean
is_goo: Boolean
is_baz: Boolean
}
Object implementing one or more Interfaces
type Foo {
name : String
}
type Bar {
is_bar : String
}
union SingleUnion = Foo
union MultipleUnion = Foo | Bar
type Root {
single: SingleUnion
multiple: MultipleUnion
}
Union of one or more Objects
enum USER_STATE {
NOT_FOUND
ACTIVE
INACTIVE
SUSPENDED
}
type Root {
stateForUser ( userID : ID ! ) : USER_STATE !
users ( state : USER_STATE , limit : Int = 10 ) : [ User ]
}