Defining simple types
type Person {
id: ID!
name: String!
age: Int!
posts: [Post!]!
}
type Post {
id: ID!
title: String!
author: Person!
}
/users/<id>
/users/<id>/posts
/users/<id>/followers
>
{
allPersons(last: 2) {
name
age
}
}
<
{
"allPersons": [
{ "name": "Johnny", "age": 23 },
{ "name": "Sarah", "age": 20 },
{ "name": "Alice", "age": 35 }
]
}
>
{
allPersons(last: 2) {
name
age
}
}
<
{
"allPersons": [
{ "name": "Sarah", "age": 20 },
{ "name": "Alice", "age": 35 }
]
}
>
{
allPersons(last: 1) {
name
posts {
title
}
}
}
<
{
"allPersons": [
{
"name": "Alice",
"posts": [
{ "title": "How to get started with React & GraphQL" }
]
}
]
}
- Defines capabilities of the API by specifying how a client and fetch and update data
- Represents contract between client and server
- Collection of GraphQL types with special root types
type Query { ... }
type Mutation { ... }
type Subscription { ... }
{
allPersons {
name
}
}
type Query {
allPersons(last: Int): [Person!]!
}
mutation {
createPerson(name: “Bob”, age: 36) {
id
}
}
type Mutation {
createPerson(name: String!, age: String!): Person!
}
- creating new data
- updating existing data
- deleting existing data
subscription {
newPerson {
name
age
}
}
type Subscription {
newPerson: Person!
}
type Query {
allPersons(last: Int):
[Person!]!
allPosts(last: Int):
[Post!]!
}
type Mutation {
createPerson(
name: String!,
age: String!
): Person!
updatePerson(
id: ID!,
name: String!,
age: String!
): Person!
deletePerson(id: ID!): Person!
createPost(
title: String!
): Post!
updatePost(
id: ID!,
title: String!
): Post!
deletePost(id: ID!): Post!
}
type Subscription {
newPerson: Person!
updatePerson: Person!
deletePerson: Person!
newPost: Post!
updatePost: Post!
deletePost: Post!
}
type Person {
id: ID!
name: String!
age: Int!
posts: [Post!]!
}
type Post {
title: String!
author: Person!
}