Les queries GraphQL
Les resolvers vont permettent de lire les queries en mode lecture et de récupérer les données en base de données. Avant de les générer, nous avons besoin des queries.
Pourquoi avons-nous besoin d'une requête ?
Les requêtes GraphQL aident à réduire la récupération excessive des données. Contrairement à une API Rest, GraphQL permet de restreindre les champs qui doivent être récupérés sur le serveur. Cela signifie des requêtes plus petites et moins de trafic sur le réseau, ce qui réduit à son tour le temps de réponse.
Nous allons avoir besoin de différentes solutions dans la récupération de nos résultats :
- Récupérer tous nos artistes
- Récupérer un artiste selon un ID
- Récupérer tous nos albums
- Récupérer un album selon un ID
Dans le dossier config/graphql/types
, créez le fichier Query.yaml
avec ce contenu correspondant à nos entitées précédemment créé :
Query:
type: object
config:
fields:
Artist:
type: 'Artist'
args:
id:
description: 'Resolves Artist using its id.'
type: 'Int!'
Artists:
type: '[Artist]'
Album:
type: 'Album'
args:
id:
description: 'Resolves Album using its id.'
type: 'Int!'
Albums:
type: '[Album]'
Mon premier champ Artist
, au singulier, permet de récupérer un artiste selon un id
. Le second champ Artists
, au pluriel, permet de récupérer tous les artistes en se fondant sur l'entité Artist
précédemment créer. Il en va de même pour les champs Album
et Albums
.
À partir de maintenant, vous avez accès à la documentation depuis l'interface de GraphiQL, pensez à actualiser la page et effectuer un essai depuis le panneau de gauche avec la requête qui suit. Nous demandons à récupérer les id
et firstname
des différents artistes. Il est pleinement possible de demander seulement les prénoms en retirant id
de la requête ci-dessous :
{
Artists {
id,
firstname
}
}
Vous pouvez demander l'artiste relié à tous vos albums de la manière suivante :
{
Albums {
artist {
id
}
}
}
Si vous souhaitez récupérer un seul artiste selon son ID, la requête ressemblera à :
{
Artist(id: 12) {
id,
firstname
}
}
Peu importe la requête testée, vous obtiendrez en résultat à null
pour le moment. Ce résultat est normal, car nous n'avons aucuns resolvers instauré qui permet la récupération des données en base de données.
Pensez à insérer des données de tests dans la base de données. Pour cela, utiliser les fixtures.