GraphQL est un langage de requête populaire qui permet aux développeurs d’interroger efficacement les données en spécifiant les données dont ils ont besoin et comment elles doivent être structurées. Le langage est indépendant de toute base de données ou mécanisme de stockage spécifique et peut être utilisé avec une variété de frameworks pour créer des API robustes et évolutives.
Contrairement aux API REST, GraphQL fournit un point de terminaison unique pour toutes les requêtes, ce qui facilite le développement et la maintenance des API. Il existe plusieurs frameworks disponibles pour implémenter GraphQL, chacun avec ses propres avantages et inconvénients.
Dans cet article, nous allons explorer certains des frameworks les plus populaires pour implémenter GraphQL et discuter des avantages et des inconvénients de chacun. Nous fournirons également un exemple de base CRUD (créer, lire, mettre à jour, supprimer) pour vous aider à démarrer.
Quatre frameworks GraphQL populaires
1. Serveur Apollo
Apollo Server est un serveur GraphQL open source populaire qui peut être utilisé avec plusieurs langages de programmation, notamment JavaScript, Python et Ruby. Il prend en charge un large éventail de fonctionnalités, telles que les abonnements, la mise en cache et la gestion des erreurs. Il est construit au-dessus d’Express, ce qui facilite son intégration aux applications existantes.
Avantages
- Prend en charge une variété de fonctionnalités, y compris les abonnements, la mise en cache et la gestion des erreurs.
- Fournit une interface utilisateur conviviale pour explorer votre schéma et exécuter des requêtes.
- Bonne documentation et support communautaire.
Les inconvénients
- Les performances peuvent être affectées dans les applications à grande échelle.
Exemple:
javascript const { ApolloServer, gql } = require('apollo-server');
// Define your schema
const typeDefs = gql`
type Book {
title: String
author: String
}
type Query {
books: [Book]
}
`;
// Define your data
const books = [
{ title: 'The Great Gatsby', author: 'F. Scott Fitzgerald' },
{ title: 'To Kill a Mockingbird', author: 'Harper Lee' },
];
// Define your resolvers
const resolvers = {
Query: {
books: () => books,
},
};
// Create an instance of ApolloServer
const server = new ApolloServer({ typeDefs, resolvers });
// Start the server
server.listen().then(({ url }) => {
console.log(`Server running at ${url}`);
});
2. Graph QL Yoga
GraphQL Yoga est un autre serveur GraphQL populaire qui repose sur Express et offre une variété de fonctionnalités, telles que les téléchargements de fichiers, les abonnements et les middleware personnalisés. Il est conçu pour être facile à utiliser et fournit une API simple qui facilite le démarrage.
Avantages
- Fournit une API simple et est facile à utiliser.
- Prend en charge une variété de fonctionnalités, telles que les téléchargements de fichiers, les abonnements et les middleware personnalisés.
- Bonne documentation et support communautaire.
Les inconvénients
- Peut ne pas être aussi performant que certaines autres options.
Exemple:
javascript const { GraphQLServer } = require('graphql-yoga');
// Define your schema
const typeDefs = `
type Query {
hello: String!
}
`;
// Define your resolvers
const resolvers = {
Query: {
hello: () => 'Hello World!',
},
};
// Create an instance of GraphQLServer
const server = new GraphQLServer({ typeDefs, resolvers });
// Start the server
server.start(() => console.log('Server running on http://localhost:4000'));
3. Rencontre
Hasura est un moteur GraphQL open source populaire qui peut être utilisé avec plusieurs bases de données, y compris PostgreSQLName, MySQL et SQL. Il fournit une synchronisation des données en temps réel et génère automatiquement des API GraphQL basées sur votre schéma de base de données. Hasura est conçu pour être évolutif et fournit un ensemble puissant de fonctionnalités qui peuvent être utilisées pour créer des applications complexes.
Avantages
- Fournit une synchronisation des données en temps réel et génère automatiquement des API GraphQL en fonction de votre schéma de base de données.
- Conçu pour être évolutif et fournit un ensemble puissant de fonctionnalités.
- Bonne documentation et support communautaire.
Les inconvénients
- Peut être plus complexe à configurer par rapport aux autres options.
Exemple:
javascript
const { createClient } = require('@hasura/graphql-client');
const gql = require('graphql-tag');
/ Create a Hasura client
const client = createClient({
url: 'https://my.hasura.app/v1/graphql',
headers: {
'x-hasura-admin-secret': 'MY_SECRET_KEY',
},
});
// Define your query
const query = gql query { books { id title author } };
// Execute your query
client.query({ query })
.then((result) => console.log(result.data.books))
.catch((error) => console.error(error));
4. Prisme
Prisma est une boîte à outils de base de données moderne qui fournit un ORM et un client de type sécurisé pour créer des API GraphQL évolutives et performantes. Il prend en charge plusieurs bases de données, notamment PostgreSQL, MySQL et SQLite. Prisma fournit un ensemble de fonctionnalités puissantes telles que la modélisation des données, les migrations et l’amorçage de la base de données.
Avantages
- Fournit un ORM et un client de type sécurisé pour créer des API GraphQL évolutives et performantes.
- Prend en charge plusieurs bases de données, notamment PostgreSQL, MySQL et SQLite.
- Fournit un ensemble de fonctionnalités puissantes telles que la modélisation des données, les migrations et l’amorçage de la base de données.
Les inconvénients
- Peut être plus complexe à configurer par rapport aux autres options.
Exemple:
javascript
const { PrismaClient } = require('@prisma/client');
// Create a Prisma client
const prisma = new PrismaClient();
// Define your query
const query = prisma.book.findMany({
select: {
id: true,
title: true,
author: true,
},
});
// Execute your query
query
.then((result) => console.log(result))
.catch((error) => console.error(error))
.finally(() => prisma.$disconnect());
Conclusion
Il existe plusieurs frameworks et outils populaires qui peuvent être utilisés pour implémenter les API GraphQL. Chacun a son propre ensemble d’avantages et d’inconvénients, et le choix dépend en fin de compte de votre cas d’utilisation et de vos exigences spécifiques. Nous espérons que les exemples fournis ici vous aideront à démarrer avec la mise en œuvre de GraphQL dans vos propres applications.