Sommaire
Comment implémenter des directives dans GraphQL
GraphQL est un langage de requête puissant qui permet aux développeurs de demander exactement les données dont ils ont besoin. Cependant, pour aller au-delà des simples requêtes, les directives offrent une flexibilité supplémentaire. Dans cet article, nous allons explorer comment implémenter des directives dans GraphQL, en mettant l’accent sur leur utilité et leur mise en œuvre.
Qu’est-ce qu’une directive dans GraphQL ?
Les directives sont des annotations que vous pouvez ajouter à vos schémas GraphQL pour modifier le comportement des requêtes. Elles permettent d’ajouter des fonctionnalités comme la validation, le filtrage ou même la transformation des données. Les directives les plus courantes sont `@include` et `@skip`, qui permettent de conditionner l’inclusion de champs dans les résultats en fonction de certaines conditions.
Création d’une directive personnalisée
Pour créer une directive personnalisée, vous devez d’abord la définir dans votre schéma GraphQL.
. Voici un exemple de définition d’une directive qui permet de transformer un champ en majuscules :
directive @uppercase on FIELD_DEFINITION
Une fois la directive définie, vous devez implémenter sa logique dans le résolveur. Voici un exemple en utilisant JavaScript avec Apollo Server :
const { ApolloServer, gql } = require('apollo-server');
const typeDefs = gql`
directive @uppercase on FIELD_DEFINITION
type Query {
hello: String @uppercase
}
`;
const resolvers = {
Query: {
hello: () => 'bonjour',
},
// Ajout de la logique pour la directive
String: {
uppercase: (next) => (root, args, context, info) => {
return next(root, args, context, info).toUpperCase();
},
},
};
const server = new ApolloServer({ typeDefs, resolvers });
server.listen().then(({ url }) => {
console.log(`🚀 Server ready at ${url}`);
});
Utilisation de la directive dans une requête
Une fois que vous avez défini et implémenté votre directive, vous pouvez l’utiliser dans vos requêtes GraphQL. Voici comment vous pourriez interroger le champ `hello` en utilisant la directive `@uppercase` :
{
hello
}
La réponse serait alors :
{
"data": {
"hello": "BONJOUR"
}
}
Conclusion
Les directives dans GraphQL sont un outil puissant pour enrichir vos API et améliorer la flexibilité de vos requêtes. En créant des directives personnalisées, vous pouvez adapter le comportement de votre API aux besoins spécifiques de votre application. Que ce soit pour transformer des données, appliquer des règles de validation ou conditionner l’inclusion de champs, les directives sont un atout précieux pour tout développeur GraphQL.

