GraphQL avec Symfony

GraphQL avec Symfony


Installation du bundle

Commençons par installer le bundle https://github.com/overblog/GraphQLBundle

composer require overblog/graphql-bundle

Nous ajoutons au même moment l'IDE GraphiQL qui est contenu dans un autre bundle https://github.com/overblog/GraphiQLBundle. L'IDE permet d'afficher directement la documentation, ainsi que d'effectuer les query :

composer req --dev overblog/graphiql-bundle

Normalement l'url http://symfony.localhost/graphiql est disponible (avec une erreur 500)

Types objet

Nous allons commencer par créer les types GraphQL pour les trois principaux objets :

  • Astronaute
  • Planète
  • Grade

Nous allons ensuite mettre les types dans le dossier config/graphql/types.

Grade

On commence par grade qui est l'objet le plus simple, il ne contient que le nom du grade.

Ajoutez le fichier Grade.yaml avec le code suivant :

Grade: type: object config: fields: id: type: 'Int!' name: type: 'String!'

Planète

Ajoutez le fichier Planet.yaml avec le code suivant :

Planet: type: object config: fields: id: type: 'Int!' name: type: 'String!' astronauts: type: '[Astronaut]'

Comme vous le remarquez, le type GraphQL ne suit pas directement le type MySQL. Ici on permet la récupération directement dans l'object planet de l'ensemble des astronautes.

Astronaute

Ajoutez le fichier Astronaut.yaml avec le code suivant :

Astronaut: type: object config: fields: id: type: 'Int!' pseudo: type: 'String!' grade: type: 'Grade' planet: type: 'Planet'

Dans le cas de l'astronaute, l'objet contient directement le grade et la planet.

Retrouvez le code directement ici

Auteur(s)

Vincent Composieux

Vincent Composieux

Architecte passionné par les technologies web depuis de longues années, je pratique principalement du PHP (Symfony) / Javascript mais aussi du Python ou Golang.

Voir le profil

Vous souhaitez en savoir plus sur le sujet ?
Organisons un échange !

Notre équipe d'experts répond à toutes vos questions.

Nous contacter

Découvrez nos autres contenus dans le même thème