enum USER\_STATE {
NOT\_FOUND
ACTIVE
INACTIVE
SUSPENDED
}
type Root {
stateForUser(userID: ID!): USER\_STATE!
users(state: USER\_STATE, limit: Int = 10): [User]
}
Getting Started
Enums
Unions
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
Interfaces
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
Custom Scalars
scalar Url
type User {
name: String
homepage: Url
}
Input Types
input ListUsersInput {
limit: Int
since\_id: ID
}
type Mutation {
users(params: ListUsersInput): [User]!
}
Input Arguments
#Basic Input
type Query {
users(limit: Int): [User]
}
#Input with default value
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]
}
Type Modifiers
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 |
Type Definitions
scalar |
Scalar Type |
type |
Object Type |
interface |
Interface Type |
union |
Union Type |
enum |
Enum Type |
input |
Input Object Type |
Built-in Scalar Types
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 |
Schema
schema |
GraphQL schema definition |
query |
Read and traverse data |
mutation |
Modify data or trigger an action |
subscription |
Run a query when an event occurs |
Overview
- 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
Comments
Related