GraphQL,
you're intuitive and flexible,
we'll be friends
I know beginnings,
I know endings too,
and life-in-death, and something else
I'd rather not recall just now.
First encounter
We met in an unbelievable year,
When the world's strength was at an ebb
I marvel at everything as if it were new.
Getting to know better
Query
Mutation
Subscription
Schema
type Poet {
name: String!
nationality: String!
literatureMovement: String!
poems: [Poem]
bornIn: Int!
diedIn: Int!
}
type Query {
poets: [Poet]
}
Resolvers
const resolvers = {
Query: {
poets: () => {
// Here would be the logic for getting all the poets
// But this time we'll just return an object
return [{
name: 'Anna Akhmatova',
nationality: 'Russian / Soviet',
literatureMovement: 'Acmeism',
poems: [/* Here would be the poems */],
bornIn: 1889,
diedIn: 1966
}]
}
}
}
Forgive me that I ignored the sun
And that I lived in sorrow.
The crush
Get what you actually need
[{
"id": 1,
"name": "Anna Akhmatova",
"nationality": "Russian / Soviet",
"literatureMovement": "Acmeism",
"bornIn": 1889,
"diedIn": 1966
},
...
]
GET /poets/
Get what you actually need
query {
poets {
name
}
}
{
"data": {
"poets": [
{
"name": "Anna Akhmatova"
},
{
"name": "Marina Tsvetaeva"
},
...
]
}
}
Get what you actually need
GET /poets/1/
GET /poets/1/poems
{
"id": 1,
"name": "Anna Akhmatova",
"nationality": "Russian / Soviet",
"literatureMovement": "Acmeism",
"bornIn": 1889,
"diedIn": 1966
}
[{
"name": "Requiem",
...
},
...
]
Get what you actually need
query {
poet(id: 1) {
name
poems {
name
}
}
}
{
"data": {
"poet": {
"name": "Anna Akhmatova",
"poems": [{
"name": "Requiem"
},
...
]
}
}
}
Each of our lives is a Shakespearean drama raised to the thousandth degree.
The conflict
ERRor Handling
N+1 problem
This is only the beginning
You're tender and loyal, we'll be friends.
State management with
Apollo client
directives
directives
const query = gql`
query {
poet @rest(type: "Poet", path: "poets/1/") {
name
}
}
`;
{
"data": {
"poet": {
"name": "Anna Akhmatova"
}
}
}
Links
GraphQL, you're intuitive and flexible, we'll be friends
By Eevis Panula
GraphQL, you're intuitive and flexible, we'll be friends
All the quotes are from Anna Akhmatova
- 1,357